КонтейнерОткрыватель

общедоступный класс ContainerOpener

Класс-помощник для открытия контейнеров.

Это оболочка метода openContainer(String, Container.Callback) для пользователей, которым не нужен тот высокий уровень контроля, который он обеспечивает.

Контейнер может находиться в трех состояниях:

  • По умолчанию: это контейнер, поставляемый с приложением (двоичный контейнер или файл JSON, преобразованный в контейнер).
  • Устаревший: контейнер, загруженный с сервера не недавно.
  • Свежий: контейнер, недавно загруженный с сервера.

Вот пример, в котором вызывающая сторона хочет подождать до 100 миллисекунд, чтобы получить контейнер, отличный от контейнера по умолчанию (получая контейнер по умолчанию, если время ожидания истекло).

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

Если вызывающая сторона хочет получать асинхронное уведомление, когда контейнер доступен, но хочет вручную указать тайм-аут равным 0,5 секунды, тогда вызывающая сторона должна создать подкласс ContainerOpener.Notifier . Пример использования:

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

Сводка вложенных классов

интерфейс ContainerOpener.ContainerFuture Объект, который вернет Контейнер.
интерфейс ContainerOpener.Notifier Объект, который получит уведомление, когда контейнер станет доступен для использования.
перечисление ContainerOpener.OpenType Настройки открытия контейнера.

Постоянное резюме

длинный DEFAULT_TIMEOUT_IN_MILLIS Тайм-аут по умолчанию в миллисекундах для запроса контейнера.

Краткое описание общедоступного метода

статический ContainerOpener.ContainerFuture
openContainer ( TagManager tagManager , StringContainerId , ContainerOpener.OpenType openType , Long timeoutInMillis )
статическая пустота
openContainer ( TagManager tagManager , StringContainerId , ContainerOpener.OpenType openType , Long timeoutInMillis , ContainerOpener.Notifier уведомитель )

Константы

общедоступный статический окончательный длинный DEFAULT_TIMEOUT_IN_MILLIS

Тайм-аут по умолчанию в миллисекундах для запроса контейнера.

Постоянное значение: 2000

Публичные методы

общедоступный статический ContainerOpener.ContainerFuture openContainer ( TagManager tagManager , StringContainerId , ContainerOpener.OpenType openType , Long timeoutInMillis )

Ожидает загрузки контейнера до времени timeoutInMillis (не по умолчанию или свежего, в зависимости от указанного openType ).

Если открытый тип PREFER_NON_DEFAULT , загружается контейнер не по умолчанию (сохраненный или полученный из сети), и ContainerFuture разблокируется, как только происходит одно из следующих событий:

  • сохраненный контейнер загружается.
  • если сохраненного контейнера нет, значит загружается сетевой контейнер или возникает сетевая ошибка.
  • таймер истекает.

Если происходит сетевая ошибка или истекает время таймера, get() может вернуть контейнер по умолчанию.

Если открытый тип PREFER_FRESH , загружается новый (сохраненный или полученный из сети) контейнер, и ContainerFuture разблокируется, как только происходит одно из следующих событий:

  • загружается сохраненный свежий контейнер.
  • если сохраненного контейнера нет или сохраненный контейнер устарел, загружается сетевой контейнер или возникает сетевая ошибка.
  • таймер истекает.

Если происходит сетевая ошибка или истекает время таймера, get() может вернуть контейнер по умолчанию или сохраненный устаревший контейнер.

Если вы вызовете openContainer во второй раз с заданным containerId , будет возвращен ContainerFuture , метод get() которого вернет тот же контейнер, что и при первом вызове.

Параметры
Менеджер тегов TagManager для вызова openContainer
идентификатор контейнера идентификатор контейнера для загрузки
openType выбор способа открытия контейнера
таймаутВМиллис максимальное количество миллисекунд ожидания загрузки контейнера (из сохраненного хранилища). Если значение равно нулю, будет использоваться DEFAULT_TIMEOUT_IN_MILLIS .
Возврат
  • объект, метод get которого вернет контейнер, но может блокироваться до времени timeoutInMillis, пока контейнер не станет доступен.

public static void openContainer ( TagManager tagManager , StringContainerId , ContainerOpener.OpenType openType , Long timeoutInMillis , уведомитель ContainerOpener.Notifier )

Ожидает загрузки контейнера до времени timeoutInMillis (не по умолчанию или свежего, в зависимости от указанного openType ).

Если открытый тип PREFER_NON_DEFAULT , контейнер не по умолчанию (сохраненный или полученный из сети) загружается и передается в уведомитель. Уведомитель вызывается, как только происходит одно из следующих событий:

  • сохраненный контейнер загружается.
  • если сохраненного контейнера нет, значит загружается сетевой контейнер или возникает сетевая ошибка.
  • таймер истекает.

Если происходит сетевая ошибка или истекает время таймера, контейнер, переданный containerAvailable(Container) становится контейнером по умолчанию.

Если открытый тип PREFER_FRESH , новый контейнер (сохраненный или полученный из сети) загружается и передается в уведомитель. Уведомитель вызывается, как только происходит одно из следующих событий:

  • загружается сохраненный свежий контейнер.
  • если сохраненного контейнера нет или сохраненный контейнер устарел, загружается сетевой контейнер или возникает сетевая ошибка.
  • таймер истекает.

Если происходит сетевая ошибка или истекает время таймера, контейнер, передаваемый containerAvailable(Container) может быть контейнером по умолчанию или устаревшим сохраненным контейнером.

Если вы вызываете openContainer(TagManager, String, ContainerOpener.OpenType, Long) второй раз с containerId , тот же контейнер, возвращенный из предыдущего вызова, будет передан в уведомитель, как только он станет доступен.

Параметры
Менеджер тегов TagManager для вызова openContainer
идентификатор контейнера идентификатор контейнера для загрузки
openType выбор способа открытия контейнера
таймаутВМиллис максимальное количество миллисекунд ожидания загрузки контейнера (из сохраненного хранилища и/или сети). Если значение равно нулю, будет использоваться DEFAULT_TIMEOUT_IN_MILLIS .
уведомитель уведомитель, который будет вызван, когда контейнер станет доступен. Он будет вызван с сохраненным или сетевым контейнером, если он доступен и загружен до истечения времени ожидания. В противном случае он будет вызван с контейнером по умолчанию. Уведомитель может быть вызван из другого потока.