Containeröffner

öffentliche Klasse ContainerOpener

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.

Konstanter Wert: <ph type="x-smartling-placeholder"></ph> 2000

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.