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