Hilfsklasse zum Öffnen von Containern.
Dies ist ein Wrapper um openContainer(String, Container.Callback)
für Nutzer an, die keine umfassende Kontrolle benötigen.
Ein Container kann sich in drei Status befinden:
- Standardeinstellung: Dies ist der Container, der mit der App ausgeliefert wird (entweder ein Binärprogramm). Container oder eine JSON-Datei, die in einen Container konvertiert wird).
- Veraltet: Ein Container, der vor Kurzem vom Server heruntergeladen wurde.
- Aktuell: Ein Container, der vor Kurzem vom Server heruntergeladen wurde.
Hier ist ein Beispiel, bei dem der Anrufer bis zu 100 Millisekunden warten möchte, um den Nicht-Standardcontainer (Abrufen des Standardcontainers, wenn eine Zeitüberschreitung auftritt).
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,
das Zeitlimit manuell auf 0,5 Sekunden festlegen, sollte der Aufrufer
ContainerOpener.Notifier
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 das Anfordern des Containers. |
Public Method Summary
statisch ContainerOpener.ContainerFuture |
openContainer(TagManager tagManager, String containerId, ContainerOpener.OpenType openType, LongtimeoutInMillis)
|
statisch voidm |
openContainer(TagManager tagManager, String containerId, ContainerOpener.OpenType openType, LongtimeoutInMillis, ContainerOpener.Notifier notifier)
|
Konstanten
<ph type="x-smartling-placeholder"></ph> öffentlich statisch letzte lang DEFAULT_TIMEOUT_IN_MILLIS
Das Standardzeitlimit in Millisekunden für das Anfordern des Containers.
Public Methods
<ph type="x-smartling-placeholder"></ph> öffentlich statisch ContainerOpener.ContainerFuture openContainer (TagManager tagManager, String containerId, ContainerOpener.OpenType openType, Long timeoutInMillis)
Wartet bis zu timeoutInMillis
-mal, bis ein Container geladen wird (nicht standardmäßig oder aktuell)
abhängig vom angegebenen openType
).
Wenn der geöffnete Typ PREFER_NON_DEFAULT
ist, gilt eine Nicht-Standardeinstellung (gespeichert oder abgerufen aus
Netzwerkcontainers geladen und die Blockierung von ContainerFuture wird aufgehoben,
eines der folgenden Ereignisse:
- wird ein gespeicherter Container geladen.
- Wenn kein gespeicherter Container vorhanden ist, wird ein Netzwerkcontainer geladen oder tritt ein Netzwerkfehler auf.
- der Timer abläuft.
Wenn ein Netzwerkfehler auftritt oder der Timer abläuft, zeigt get()
möglicherweise Folgendes an:
einem Standardcontainer.
Wenn der geöffnete Typ PREFER_FRESH
ist, wird eine neue (gespeicherte oder abgerufene
Netzwerkcontainers geladen und die Blockierung von ContainerFuture wird aufgehoben,
eines der folgenden Ereignisse:
- wird ein neuer gespeicherter Container geladen.
- Wenn kein gespeicherter Container vorhanden ist oder der gespeicherte Container veraltet ist, ist ein Netzwerkcontainer geladen wird oder ein Netzwerkfehler auftritt.
- der Timer abläuft.
Wenn ein Netzwerkfehler auftritt oder der Timer abläuft, zeigt get()
möglicherweise Folgendes an:
Standardcontainer oder
einen gespeicherten veralteten Container.
Wenn Sie openContainer
mit einer bestimmten containerId
ein zweites Mal aufrufen,
wird eine ContainerFuture
zurückgegeben, deren get()
-Wert
dem gleichen Container
wie beim ersten Aufruf.
Parameter
tagManager | Den TagManager , für den openContainer aufgerufen werden soll |
containerId | Die ID des zu ladenden Containers |
openType | die Wahl, wie der Container geöffnet werden soll, |
timeoutInMillis | die maximale Anzahl von Millisekunden, die auf das Laden des Containers gewartet werden soll (von
gespeicherten Shop). Wenn null ist, wird DEFAULT_TIMEOUT_IN_MILLIS verwendet. |
Gibt Folgendes zurück:
- Objekt, dessen get-Methode den Container zurückgibt, aber bis zu ZeitüberschreitungInMillis, bis der Container verfügbar ist.
<ph type="x-smartling-placeholder"></ph> öffentlich Statisch voidm openContainer (TagManager tagManager, String tagManager, ContainerOpener.OpenType tagManager, Long tagManager, ContainerOpener.Notifier
Wartet bis zu timeoutInMillis
-mal, bis ein Container geladen wird (nicht standardmäßig oder aktuell)
abhängig vom angegebenen openType
).
Wenn der geöffnete Typ PREFER_NON_DEFAULT
ist, gilt eine Nicht-Standardeinstellung (gespeichert oder abgerufen aus
Netzwerk) geladen und an den Notifier übergeben wird. Der Notifier wird aufgerufen, sobald
eines der folgenden Ereignisse:
- wird ein gespeicherter Container geladen.
- Wenn kein gespeicherter Container vorhanden ist, wird ein Netzwerkcontainer geladen oder tritt ein Netzwerkfehler auf.
- der Timer abläuft.
Wenn ein Netzwerkfehler auftritt oder der Timer abläuft, wird der Container an
containerAvailable(Container)
ist ein Standardcontainer.
Wenn der geöffnete Typ PREFER_FRESH
ist, wird eine neue (gespeicherte oder abgerufene
Netzwerk) geladen und an den Notifier übergeben wird. Der Notifier wird aufgerufen, sobald
eines der folgenden Ereignisse:
- wird ein neuer gespeicherter Container geladen.
- Wenn kein gespeicherter Container vorhanden ist oder der gespeicherte Container veraltet ist, wird ein Netzwerkcontainer geladen. oder ein Netzwerkfehler auftritt.
- der Timer abläuft.
Wenn ein Netzwerkfehler auftritt oder der Timer abläuft, wird der Container an
containerAvailable(Container)
kann ein standardmäßiger oder veralteter gespeicherter Container sein.
Wenn Sie openContainer(TagManager, String, ContainerOpener.OpenType, Long)
mit einer bestimmten containerId
ein zweites Mal aufrufen,
Container, der vom vorherigen Aufruf zurückgegeben wurde, wird an den Notifier übergeben, sobald dieser
wenn sie verfügbar sind.
Parameter
tagManager | Den TagManager , für den openContainer aufgerufen werden soll |
containerId | Die ID des zu ladenden Containers |
openType | die Wahl, wie der Container geöffnet werden soll, |
timeoutInMillis | die maximale Anzahl von Millisekunden, die auf das Laden des Containers gewartet werden soll (von
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. Es wird mit dem gespeicherten oder Netzwerkcontainer aufgerufen, falls verfügbar, und vor dem Zeitlimit geladen. Andernfalls wird sie mit dem Standardcontainer aufgerufen. Der Notifier kann von einer einem anderen Thread. |