Apertura con container

classe pubblica ContainerOpener

Classe helper per l'apertura dei container.

Si tratta di un wrapper attorno al metodo openContainer(String, Container.Callback) per gli utenti che non hanno bisogno del livello di controllo granulare che fornisce.

Un contenitore può trovarsi in tre stati:

  • Valore predefinito: si tratta del container fornito con l'app (un container binario o un file json convertito in container).
  • Inattivo: un contenitore che è stato scaricato dal server, ma non di recente.
  • Fresco: un contenitore che è stato scaricato dal server di recente.

Ecco un esempio in cui il chiamante vuole attendere fino a 100 millisecondi per ricevere il container non predefinito (recuperando il container predefinito in caso di timeout).

   ContainerFuture future =
       ContainerOpener.openContainer(tagManager, containerId, OpenType.PREFER_NON_DEFAULT, 100);
   Container container = future.get();
 

Se il chiamante vuole ricevere una notifica in modo asincrono quando il container è disponibile, ma vuole specificare manualmente il timeout su 0,5 secondi, deve utilizzare una sottoclasse ContainerOpener.Notifier. Esempio di utilizzo:

   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.
         }
       });
 

Riepilogo dei corsi nidificati

interfaccia ContainerOpener.ContainerFuture Un oggetto che restituisce un Container. 
interfaccia ContainerOpener.Notifier Oggetto che riceverà una notifica quando un contenitore è disponibile per l'uso. 
enum ContainerOpener.OpenType Preferenze per l'apertura di un contenitore. 

Riepilogo costante

lunghi DEFAULT_TIMEOUT_IN_MILLIS Il timeout predefinito in millisecondi per la richiesta del container.

Riepilogo del metodo pubblico

statico ContainerOpener.ContainerFuture
openContainer(TagManager tagManager, Stringa containerId, ContainerOpener.OpenType openType, Long timeoutInMillis)
statico void
openContainer(TagManager tagManager, String containerId, ContainerOpener.OpenType openType, Long timeoutInMillis, ContainerOpener.Notifier notifier)

Costanti

pubblica statica finale long DEFAULT_TIMEOUT_IN_MILLIS

Il timeout predefinito in millisecondi per la richiesta del container.

Valore costante: 2000

Metodi pubblici

statico pubblico ContainerOpener.ContainerFuture openContainer (TagManager tagManager, Stringa containerId, ContainerOpener.OpenType openType}13}{/1

Attende fino a timeoutInMillis di tempo per il caricamento di un container (non predefinito o nuovo, a seconda del openType specificato).

Se il tipo aperto è PREFER_NON_DEFAULT, viene caricato un container non predefinito (salvato o recuperato dalla rete) e ContainerFuture viene sbloccato non appena si verifica una delle seguenti condizioni:

  • viene caricato un container salvato.
  • Se non esiste un container salvato, viene caricato un contenitore di rete o si verifica un errore di rete.
  • il timer scade.

Se si verifica un errore di rete o il timer scade, get() potrebbe restituire un container predefinito.

Se il tipo aperto è PREFER_FRESH, viene caricato un container nuovo (salvato o recuperato dalla rete) e ContainerFuture viene sbloccato non appena si verifica una delle seguenti condizioni:

  • viene caricato un container aggiornato salvato.
  • Se non è presente alcun container salvato o se il container è inattivo, viene caricato un container di rete o si verifica un errore di rete.
  • il timer scade.

Se si verifica un errore di rete o il timer scade, get() potrebbe restituire un container predefinito o un container inattivo salvato.

Se chiami openContainer una seconda volta con un determinato containerId, verrà restituito un ContainerFuture il cui get() restituirà lo stesso contenitore della prima chiamata.

Parametri
tagManager il TagManager su cui chiamare openContainer
containerId l'ID del container da caricare
openType la scelta di come aprire il container
timeoutInMillis il numero massimo di millisecondi di attesa per caricare il container (dall'archivio salvato). Se null, verrà utilizzato DEFAULT_TIMEOUT_IN_MILLIS.
Ritorni
  • un oggetto il cui metodo get restituirà il container, ma può bloccare fino a timeoutInMillis finché il container non è disponibile.

pubblici static void openContainer (TagManager tagManager, String tagManager, ContainerOpener.OpenType tagManager openType openType ContainerOpener.Notifier

Attende fino a timeoutInMillis di tempo per il caricamento di un container (non predefinito o nuovo, a seconda del openType specificato).

Se il tipo aperto è PREFER_NON_DEFAULT, un container non predefinito (salvato o recuperato dalla rete) viene caricato e trasmesso nel notificatore. L'autore della notifica viene chiamato non appena si verifica una delle seguenti condizioni:

  • viene caricato un container salvato.
  • Se non esiste un container salvato, viene caricato un contenitore di rete o si verifica un errore di rete.
  • il timer scade.

Se si verifica un errore di rete o il timer scade, il container trasferito a containerAvailable(Container) è un container predefinito.

Se il tipo aperto è PREFER_FRESH, un container nuovo (salvato o recuperato dalla rete) viene caricato e trasmesso nel notificatore. L'autore della notifica viene chiamato non appena si verifica una delle seguenti condizioni:

  • viene caricato un container aggiornato salvato.
  • Se non è presente alcun container salvato o se il container è inattivo, viene caricato un container di rete o si verifica un errore di rete.
  • il timer scade.

Se si verifica un errore di rete o il timer scade, il container trasferito a containerAvailable(Container) potrebbe essere un container predefinito o salvato inattivo.

Se chiami openContainer(TagManager, String, ContainerOpener.OpenType, Long) una seconda volta con un determinato containerId, lo stesso container restituito dalla chiamata precedente verrà passato al notificante non appena sarà disponibile.

Parametri
tagManager il TagManager su cui chiamare openContainer
containerId l'ID del container da caricare
openType la scelta di come aprire il container
timeoutInMillis il numero massimo di millisecondi di attesa per caricare il container (dall'archivio e/o dalla rete salvati). Se null, verrà utilizzato DEFAULT_TIMEOUT_IN_MILLIS.
notificatore un notificatore che verrà chiamato quando il container è disponibile. Verrà chiamata con il container salvato o di rete, se disponibile e caricato prima del timeout. In caso contrario, verrà richiamata con il contenitore predefinito. L'autore della notifica potrebbe essere chiamato da un thread diverso.