Hilfsklasse zum Öffnen von Containern.
Dies ist ein Wrapper für die openContainer(String, Container.Callback)
-Methode für Nutzer, die nicht die detaillierte Kontrolle benötigen, die sie bietet.
Ein Container kann sich in drei verschiedenen Status befinden:
- Standardeinstellung: Dies ist der Container, der mit der Anwendung ausgeliefert wird (entweder ein Binärcontainer oder eine JSON-Datei, die in einen Container konvertiert wird).
- Veraltet: ein Container, der vor Kurzem vom Server heruntergeladen wurde.
- Aktuell: Ein Container, der kürzlich vom Server heruntergeladen wurde.
Im Folgenden finden Sie ein Beispiel, bei dem der Aufrufer bis zu 100 Millisekunden warten möchte, um den nicht standardmäßigen Container abzurufen (bei einer Zeitüberschreitung wird der Standardcontainer abgerufen).
ContainerFuture future = ContainerOpener.openContainer(tagManager, containerId, OpenType.PREFER_NON_DEFAULT, 100); Container container = future.get();
Wenn der Aufrufer asynchron benachrichtigt werden möchte, wenn der Container verfügbar ist, aber das Zeitlimit manuell auf 0,5 Sekunden festlegen möchte, sollte der Aufrufer eine abgeleitete Klasse von ContainerOpener.Notifier
erstellen. Verwendungsbeispiel:
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. } });
Zusammenfassung für geschachtelte Klassen
Oberfläche | ContainerOpener.ContainerFuture | Ein Objekt, das einen Container zurückgibt. | |
Oberfläche | ContainerOpener.Notifier | Objekt, das eine Benachrichtigung erhält, wenn ein Container zur Verwendung verfügbar ist. | |
enum | ContainerOpener.OpenType | Einstellungen zum Öffnen eines Containers. |
Constant Summary
long | DEFAULT_TIMEOUT_IN_MILLIS | Das Standardzeitlimit in Millisekunden für die Anfrage des Containers. |
Public Method Summary
statisches ContainerOpener.ContainerFuture |
openContainer(TagManager tagManager, String containerId, ContainerOpener.OpenType openType, Long timeoutInMillis)
|
Static void |
openContainer(TagManager tagManager, String containerId, ContainerOpener.OpenType openType, Long timeoutInMillis, ContainerOpener.Notifier Notifier)
|
Konstanten
public static final long DEFAULT_TIMEOUT_IN_MILLIS
Das Standardzeitlimit in Millisekunden für die Anfrage des Containers.
Public Methods
public static ContainerOpener.ContainerFuture openContainer (TagManager tagManager, String containerId, ContainerOpener.OpenType, openType{/14) openType{/14)
Wartet bis zu timeoutInMillis
-mal, bis ein Container geladen wird (je nach angegebenem openType
nicht der Standard- oder die aktuelle Version).
Wenn der geöffnete Typ PREFER_NON_DEFAULT
ist, wird ein nicht standardmäßiger (gespeicherter oder aus dem Netzwerk abgerufener) Container geladen und die Blockierung von ContainerFuture wird aufgehoben, sobald einer der folgenden Fälle eintritt:
- ein gespeicherter Container geladen wird.
- Wenn kein gespeicherter Container vorhanden ist, wird ein Netzwerkcontainer geladen oder ein Netzwerkfehler tritt auf.
- der Timer abläuft.
Wenn ein Netzwerkfehler auftritt oder der Timer abläuft, gibt get()
möglicherweise einen Standardcontainer zurück.
Wenn der geöffnete Typ PREFER_FRESH
ist, wird ein neuer (gespeicherter oder aus dem Netzwerk abgerufener) Container geladen und ContainerFuture wird nicht mehr blockiert, sobald einer der folgenden Schritte eintritt:
- wird ein neuer Container geladen.
- Wenn kein gespeicherter Container vorhanden ist oder der gespeicherte Container veraltet ist, wird ein Netzwerkcontainer geladen oder ein Netzwerkfehler tritt auf.
- der Timer abläuft.
Wenn ein Netzwerkfehler auftritt oder der Timer abläuft, gibt get()
möglicherweise einen Standardcontainer oder einen gespeicherten, veralteten Container zurück.
Wenn Sie openContainer
ein zweites Mal mit einem bestimmten containerId
aufrufen, wird eine ContainerFuture
zurückgegeben, deren get()
denselben Container wie beim ersten Aufruf zurückgibt.
Parameter
tagManager | das TagManager , für das „openContainer“ aufgerufen werden soll |
containerId | ID des zu ladenden Containers |
openType | die Wahl, wie der Container geöffnet werden soll |
timeoutInMillis | Maximale Wartezeit in Millisekunden für das Laden des Containers (aus dem gespeicherten Speicher). Wenn null ist, wird DEFAULT_TIMEOUT_IN_MILLIS verwendet. |
Rückgaben
- Ein Objekt, dessen get-Methode den Container zurückgibt, aber es kann bis zu ZeitüberschreitungInMillis blockieren, bis der Container verfügbar ist.
public static void openContainer (TagManager tagManager, String tagManager, ContainerOpener.OpenType tagManager tagManager, Long tagManager, Long Open1out15Millis}ContainerOpener.Notifier
Wartet bis zu timeoutInMillis
-mal, bis ein Container geladen wird (je nach angegebenem openType
nicht der Standard- oder die aktuelle Version).
Wenn der geöffnete Container PREFER_NON_DEFAULT
ist, wird ein nicht standardmäßiger (gespeicherter oder aus dem Netzwerk abgerufener) Container geladen und an den Notifier übergeben. Der Notifier wird aufgerufen, sobald einer der folgenden Fälle eintritt:
- ein gespeicherter Container geladen wird.
- Wenn kein gespeicherter Container vorhanden ist, wird ein Netzwerkcontainer geladen oder ein Netzwerkfehler tritt auf.
- der Timer abläuft.
Wenn ein Netzwerkfehler auftritt oder der Timer abläuft, ist der an containerAvailable(Container)
übergebene Container ein Standardcontainer.
Wenn der geöffnete Container PREFER_FRESH
ist, wird ein neuer (gespeicherter oder aus dem Netzwerk abgerufener) Container geladen und an den Notifier übergeben. Der Notifier wird aufgerufen, sobald einer der folgenden Fälle eintritt:
- wird ein neuer Container geladen.
- Wenn kein gespeicherter Container vorhanden ist oder der gespeicherte Container veraltet ist, wird ein Netzwerkcontainer geladen oder ein Netzwerkfehler tritt auf.
- der Timer abläuft.
Wenn ein Netzwerkfehler auftritt oder der Timer abläuft, kann der an containerAvailable(Container)
übergebene Container ein standardmäßiger oder veralteter gespeicherter Container sein.
Wenn Sie openContainer(TagManager, String, ContainerOpener.OpenType, Long)
ein zweites Mal mit einem bestimmten containerId
aufrufen, wird derselbe Container, der vom vorherigen Aufruf zurückgegeben wurde, an den Notifier übergeben, sobald er verfügbar ist.
Parameter
tagManager | das TagManager , für das „openContainer“ aufgerufen werden soll |
containerId | ID des zu ladenden Containers |
openType | die Wahl, wie der Container geöffnet werden soll |
timeoutInMillis | Maximale Wartezeit in Millisekunden für das Laden des Containers (aus dem gespeicherten Speicher und/oder Netzwerk). Wenn null ist, wird DEFAULT_TIMEOUT_IN_MILLIS verwendet. |
Notifier | einen Notifier, der aufgerufen wird, wenn der Container verfügbar ist. Sie wird mit dem gespeicherten oder Netzwerkcontainer aufgerufen, falls verfügbar, und vor dem Zeitlimit geladen. Andernfalls wird er mit dem Standardcontainer aufgerufen. Der Notifier kann von einem anderen Thread aufgerufen werden. |