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.
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. |