Classe d'assistance pour ouvrir des conteneurs.
Il s'agit d'un wrapper autour de la méthode openContainer(String, Container.Callback)
pour les utilisateurs qui n'ont pas besoin du niveau de contrôle précis qu'il offre.
Un conteneur peut se trouver dans trois états:
- Par défaut: il s'agit du conteneur fourni avec l'application (un conteneur binaire ou un fichier JSON converti en conteneur).
- Non actualisé: conteneur qui a été téléchargé depuis le serveur, mais pas récemment.
- Actualisée: conteneur qui a été téléchargé récemment à partir du serveur.
Voici un exemple dans lequel l'appelant souhaite attendre jusqu'à 100 millisecondes pour obtenir le conteneur autre que celui par défaut (en récupérant le conteneur par défaut en cas d'expiration du délai).
ContainerFuture future = ContainerOpener.openContainer(tagManager, containerId, OpenType.PREFER_NON_DEFAULT, 100); Container container = future.get();
Si l'appelant souhaite être averti de manière asynchrone lorsque le conteneur est disponible, mais souhaite spécifier manuellement un délai avant expiration de 0,5 seconde, il doit sous-classer ContainerOpener.Notifier
. Exemple d'utilisation :
ContainerOpener.openContainer(tagManager, containerId, OpenType.PREFER_NON_DEFAULT, 500, new ContainerOpener.Notifier() { @Override void containerAvailable(Container container) { // Code to handle the container available notification and save the container. } });
Récapitulatif des classes imbriquées
interface | ContainerOpener.ContainerFuture | Objet qui renverra un conteneur. | |
interface | ContainerOpener.Notifier | Objet qui recevra une notification lorsqu'un conteneur sera disponible. | |
enum | ContainerOpener.OpenType | Préférences pour ouvrir un conteneur. |
Récapitulatif des constantes
long | DEFAULT_TIMEOUT_IN_MILLIS | Délai avant expiration par défaut de la demande de conteneur, en millisecondes. |
Récapitulatif des méthodes publiques
statique ContainerOpener.ContainerFuture |
openContainer(TagManager tagManager, String containerId, ContainerOpener.OpenType openType, Long timeoutInMillis)
|
statique vide |
openContainer(TagManager tagManager, String containerId, ContainerOpener.OpenType openType, Long timeoutInMillis, ContainerOpener.Notifier notifier)
|
Constantes
public statique final long DEFAULT_TIMEOUT_IN_MILLIS
Délai avant expiration par défaut de la demande de conteneur, en millisecondes.
Méthodes publiques
public statique ContainerOpener.ContainerFuture openContainer (TagManager tagManager, String containerId, ContainerOpener.OpenType openType, 13InMillMill14})
Attend jusqu'à timeoutInMillis
de temps pour qu'un conteneur soit chargé (non défini par défaut ou actualisé selon le openType
spécifié).
Si le type ouvert est PREFER_NON_DEFAULT
, un conteneur autre que celui par défaut (enregistré ou récupéré à partir du réseau) est chargé et ContainerFuture est débloqué dès que l'une des situations suivantes se produit:
- un conteneur enregistré est chargé.
- en l'absence de conteneur enregistré, un conteneur réseau est chargé ou une erreur réseau se produit.
- que le minuteur expire.
Si une erreur réseau se produit ou si le minuteur expire, get()
peut renvoyer un conteneur par défaut.
Si le type ouvert est PREFER_FRESH
, un nouveau conteneur (enregistré ou récupéré à partir du réseau) est chargé et ContainerFuture est débloqué dès que l'une des situations suivantes se produit:
- un nouveau conteneur enregistré est chargé.
- s'il n'y a pas de conteneur enregistré ou si un conteneur enregistré est obsolète, un conteneur réseau est chargé ou une erreur réseau se produit.
- que le minuteur expire.
Si une erreur réseau se produit ou si le minuteur expire, get()
peut renvoyer un conteneur par défaut ou un conteneur obsolète enregistré.
Si vous appelez openContainer
une deuxième fois avec un containerId
donné, une ContainerFuture
est renvoyée dont la get()
renvoie le même conteneur que le premier appel.
Paramètres
tagManager | Le TagManager sur lequel appeler openContainer |
containerId | ID du conteneur à charger |
openType | la possibilité d'ouvrir le conteneur |
timeoutInMillis | Durée maximale d'attente (en millisecondes) entre le chargement du conteneur (à partir du magasin enregistré). Si la valeur est nulle, DEFAULT_TIMEOUT_IN_MILLIS est utilisé. |
Renvoie
- Objet dont la méthode get renverra le conteneur, mais pourra bloquer jusqu'à expirationInMillis jusqu'à ce que le conteneur soit disponible.
public statique void openContainer (TagManager tagManager, Chaîne tagManager, ContainerOpener.OpenType tagManager, notOpenTypetime1Notifier1} timeInMill1.tagManagerContainerOpener.Notifier
Attend jusqu'à timeoutInMillis
de temps pour qu'un conteneur soit chargé (non défini par défaut ou actualisé selon le openType
spécifié).
Si le type ouvert est PREFER_NON_DEFAULT
, un conteneur autre que celui par défaut (enregistré ou récupéré à partir du réseau) est chargé et transmis à l'outil d'alerte. L'outil d'alerte est appelé dès que l'un des événements suivants se produit:
- un conteneur enregistré est chargé.
- en l'absence de conteneur enregistré, un conteneur réseau est chargé ou une erreur réseau se produit.
- que le minuteur expire.
Si une erreur réseau se produit ou si le minuteur expire, le conteneur transmis à containerAvailable(Container)
est un conteneur par défaut.
Si le type ouvert est PREFER_FRESH
, un nouveau conteneur (enregistré ou récupéré à partir du réseau) est chargé et transmis à l'outil d'alerte. L'outil d'alerte est appelé dès que l'un des événements suivants se produit:
- un nouveau conteneur enregistré est chargé.
- s'il n'y a pas de conteneur enregistré ou si un conteneur enregistré est obsolète, un conteneur réseau est chargé ou une erreur réseau se produit.
- que le minuteur expire.
Si une erreur réseau se produit ou si le minuteur expire, le conteneur transmis à containerAvailable(Container)
peut être un conteneur enregistré par défaut ou obsolète.
Si vous appelez openContainer(TagManager, String, ContainerOpener.OpenType, Long)
une deuxième fois avec un containerId
donné, le même conteneur renvoyé par l'appel précédent est transmis à l'outil d'alerte dès qu'il sera disponible.
Paramètres
tagManager | Le TagManager sur lequel appeler openContainer |
containerId | ID du conteneur à charger |
openType | la possibilité d'ouvrir le conteneur |
timeoutInMillis | Durée maximale d'attente (en millisecondes) pour le chargement du conteneur (à partir d'un magasin et/ou d'un réseau enregistrés). Si la valeur est nulle, DEFAULT_TIMEOUT_IN_MILLIS est utilisé. |
système d'alerte | un système d'alerte qui sera appelé lorsque le conteneur sera disponible. Il sera appelé avec le conteneur enregistré ou réseau, s'il est disponible et chargé avant l'expiration du délai. Sinon, il est appelé avec le conteneur par défaut. L'outil d'alerte peut être appelé à partir d'un autre thread. |