Otwieranie kontenera

klasa publiczna ContainerOpener

Klasa pomocnicza do otwierania kontenerów.

Jest to otoczenie metody openContainer(String, Container.Callback) dla użytkowników, którzy nie potrzebują dokładnego poziomu kontroli, jaki zapewnia ta metoda.

Kontener może mieć 3 stany:

  • Domyślnie jest to kontener wysyłany z aplikacją (kontener binarny lub plik json przekonwertowany na kontener).
  • Nieaktualny: kontener, który został pobrany z serwera, ale nie niedawno.
  • Nowy: kontener, który został niedawno pobrany z serwera.

Oto przykład, w którym wywołujący oczekuje odczekanie do 100 milisekund na pobranie kontenera innego niż domyślny (pobieranie kontenera domyślnego po przekroczeniu limitu czasu).

   ContainerFuture future =
       ContainerOpener.openContainer(tagManager, containerId, OpenType.PREFER_NON_DEFAULT, 100);
   Container container = future.get();
 

Jeśli element wywołujący chce otrzymywać asynchroniczne powiadomienia o dostępności kontenera, ale chce ręcznie określić czas oczekiwania na 0,5 sekundy, powinien wybrać podklasę ContainerOpener.Notifier. Przykładowe zastosowanie:

   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.
         }
       });
 

Podsumowanie zagnieżdżonych zajęć

interfejs, ContainerOpener.ContainerFuture Obiekt, który zwróci kontener. 
interfejs, ContainerOpener.Notifier Obiekt, który otrzyma powiadomienie, gdy kontener będzie dostępny do użycia. 
enum | typ wyliczeniowy ContainerOpener.OpenType Ustawienia otwierania kontenera. 

Stałe podsumowanie

długi DEFAULT_TIMEOUT_IN_MILLIS Domyślny limit czasu żądania kontenera (w milisekundach).

Podsumowanie metod publicznych

statyczny ContainerOpener.ContainerFuture
openContainer(TagManager tagManager, ciąg znaków containerId, ContainerOpener.OpenType openType, Long timeoutInMillis)
statyczny stan nieważny
openContainer(TagManager tagManager, ciąg znaków containerId, ContainerOpener.OpenType openType, Long timeoutInMillis, ContainerOpener.Notifier powiadomienie)

Stałe

public static final long DEFAULT_TIMEOUT_IN_MILLIS

Domyślny limit czasu żądania kontenera (w milisekundach).

Wartość stała: 2000

Metody publiczne

public static ContainerOpener.ContainerFuture openContainer (TagManager tagManager, Ciąg containerId, ContainerOpener.OpenType openType, L11ongopenType

Czeka na wczytanie kontenera maksymalnie timeoutInMillis raz (niedomyślny lub aktualny, w zależności od określonej wartości openType).

Jeśli typ otwarty to PREFER_NON_DEFAULT, wczytany jest kontener inny niż domyślny (zapisany lub pobrany z sieci), a kontener ContainerFuture zostanie odblokowany, gdy tylko wystąpi jedna z tych sytuacji:

  • wczytany kontener.
  • Jeśli nie ma zapisanego kontenera, kontener sieci jest załadowany lub występuje błąd sieci.
  • minie czas.

Jeśli wystąpi błąd sieci lub upłynie czas, get() może zwrócić kontener domyślny.

Jeśli typ otwarty to PREFER_FRESH, zostanie wczytany nowy kontener (zapisany lub pobrany z sieci), a kontener ContainerFuture zostanie odblokowany w jednej z tych sytuacji:

  • wczytany nowy kontener.
  • Jeśli nie ma zapisanego kontenera lub takiego kontenera jest nieaktualny, kontener sieci jest wczytywany lub występuje błąd sieci.
  • minie czas.

Jeśli wystąpi błąd sieci lub upłynie czas, get() może zwrócić domyślny kontener lub zapisany nieaktualny kontener.

Jeśli ponownie wywołasz funkcję openContainer z określoną wartością containerId, zwrócony zostanie ContainerFuture, którego get() zwróci ten sam kontener co pierwsze wywołanie.

Parametry
tagManager TagManager do wywołania openContainer
containerId identyfikator kontenera do wczytania
openType wybór sposobu otwierania kontenera
timeoutInMillis maksymalny czas oczekiwania (w milisekundach) na wczytanie kontenera (z zapisanego sklepu). Jeśli ma wartość null, używana jest funkcja DEFAULT_TIMEOUT_IN_MILLIS.
Akcje powrotne
  • obiekt, którego metoda get zwróci kontener, ale może go zablokować nawet do czasu oczekiwaniaInMillis, dopóki kontener nie będzie dostępny.

public static void openContainer (TagManager tagManager, Ciąg tagManager, ContainerOpener.OpenType tagManager, Long tagManagerContainerOpener.Notifier

Czeka na wczytanie kontenera maksymalnie timeoutInMillis raz (niedomyślny lub aktualny, w zależności od określonej wartości openType).

Jeśli typem otwarcia jest PREFER_NON_DEFAULT, kontener inny niż domyślny (zapisany lub pobrany z sieci) zostanie wczytany i przekazany do powiadomienia. Powiadomienia są wywoływane natychmiast po wystąpieniu jednej z następujących sytuacji:

  • wczytany kontener.
  • Jeśli nie ma zapisanego kontenera, kontener sieci jest załadowany lub występuje błąd sieci.
  • minie czas.

Jeśli wystąpi błąd sieci lub upłynie czas, kontener przekazany do containerAvailable(Container) stanie się kontenerem domyślnym.

Jeśli typem otwarcia jest PREFER_FRESH, nowy kontener (zapisany lub pobrany z sieci) zostanie wczytany i przekazany do powiadomienia. Powiadomienia są wywoływane natychmiast po wystąpieniu jednej z następujących sytuacji:

  • wczytany nowy kontener.
  • Jeśli nie ma zapisanego kontenera lub nie jest on nieaktualny, kontener sieci jest wczytywany lub występuje błąd sieci.
  • minie czas.

Jeśli wystąpi błąd sieci lub upłynie czas, kontener przekazany do containerAvailable(Container) może być domyślnym lub nieaktualnym kontenerem.

Jeśli ponownie wywołasz funkcję openContainer(TagManager, String, ContainerOpener.OpenType, Long) z określoną wartością containerId, ten sam kontener zwrócony z poprzedniego wywołania zostanie przekazany do powiadomienia, gdy tylko będzie dostępny.

Parametry
tagManager TagManager do wywołania openContainer
containerId identyfikator kontenera do wczytania
openType wybór sposobu otwierania kontenera
timeoutInMillis maksymalny czas oczekiwania (w milisekundach) na wczytanie kontenera (z zapisanego sklepu lub sieci). Jeśli ma wartość null, używana jest funkcja DEFAULT_TIMEOUT_IN_MILLIS.
powiadomienie powiadomienie, które zostanie wywołane, gdy kontener będzie dostępny. Zostanie ona wywołana z zapisanym kontenerem sieciowym, jeśli jest dostępny i wczytany przed upływem czasu oczekiwania. W przeciwnym razie zostanie wywołana z kontenerem domyślnym. Powiadomienia można wywołać z innego wątku.