Apertura con container

classe pubblica ContainerOpener

Classe helper per l'apertura dei container.

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

Un container può trovarsi in tre stati:

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

Ecco un esempio in cui il chiamante vuole attendere fino a 100 ms per ottenere 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 contenitore è disponibile, ma vuole specificare manualmente il timeout su 0,5 secondi, il chiamante deve eseguire la 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 della classe nidificata

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

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

Riepilogo del metodo pubblico

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

Costanti

pubblica statico finale lungo . DEFAULT_TIMEOUT_IN_MILLIS

Il timeout predefinito in millisecondi per la richiesta del container.

Valore costante: . 2000

Metodi pubblici

pubblica statico ContainerOpener.ContainerFuture openContainer (TagManager tagManager, Stringa containerId, ContainerOpener.OpenType openType, Long timeoutInMillis)

Attende fino a timeoutInMillis volta il caricamento di un container (non predefinito o aggiornato a seconda del openType specificato).

Se il tipo aperto è PREFER_NON_DEFAULT, non viene definito un valore predefinito (salvato o recuperato da network), il container successivo viene caricato e ContainerFuture viene sbloccato non appena si verifica una delle seguenti situazioni:

  • viene caricato un container salvato.
  • Se non è stato salvato alcun container, 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.

Se il tipo aperto è PREFER_FRESH, un nuovo valore (salvato o recuperato da network), il container successivo viene caricato e ContainerFuture viene sbloccato non appena si verifica una delle seguenti situazioni:

  • viene caricato un nuovo container salvato.
  • se non è presente un container salvato o se il container salvato è inattivo, viene caricato 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 container 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 prima di caricare il container (da store salvato). Se nullo, verrà utilizzato DEFAULT_TIMEOUT_IN_MILLIS.
Resi
  • un oggetto il cui metodo get restituisce il container, ma può bloccare fino timeoutInMillis prima che il container sia disponibile.

pubblica statico null . openContainer (TagManager tagManager, Stringa tagManager, ContainerOpener.OpenType tagManager, Long tagManager, ContainerOpener.Notifier

Attende fino a timeoutInMillis volta il caricamento di un container (non predefinito o aggiornato a seconda del openType specificato).

Se il tipo aperto è PREFER_NON_DEFAULT, non viene definito un valore predefinito (salvato o recuperato da di rete) viene caricato e trasmesso al server di notifica. L'avviso viene chiamato non appena si verifica una delle seguenti situazioni:

  • viene caricato un container salvato.
  • Se non è stato salvato alcun container, 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 è passato containerAvailable(Container) è un container predefinito.

Se il tipo aperto è PREFER_FRESH, un nuovo valore (salvato o recuperato da di rete) viene caricato e trasmesso al server di notifica. L'avviso viene chiamato non appena si verifica una delle seguenti situazioni:

  • viene caricato un nuovo container salvato.
  • Se non è presente alcun container salvato o se il container salvato è 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 è passato containerAvailable(Container) può essere un contenitore salvato predefinito o 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 all'autore della notifica non appena affinché sia 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 prima di caricare il container (da negozio e/o rete salvati). Se nullo, verrà utilizzato DEFAULT_TIMEOUT_IN_MILLIS.
notificatore un avviso che verrà chiamato quando il contenitore sarà disponibile. Sarà chiamato con il container salvato o di rete, se disponibile e caricato prima del timeout. In caso contrario, verrà chiamato con il contenitore predefinito. L'autore della notifica può essere chiamato in un thread diverso.