ContainerOpener

classe publique ContainerOpener

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.

Valeur de la constante: 2 000

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.