ContainerOpener

公共类 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 用于打开容器的偏好设置。

常量摘要

long DEFAULT_TIMEOUT_IN_MILLIS 请求容器的默认超时时间(以毫秒为单位)。

公共方法摘要

静态 ContainerOpener.ContainerFuture
openContainer(TagManager tagManagerString containerIdContainerOpener.OpenType openTypeLong timeoutInMillis)
静态 无效
openContainer(TagManager tagManagerString containerIdContainerOpener.OpenType openTypeLong timeoutInMillisContainerOpener.Notifier notifier)

常量

<ph type="x-smartling-placeholder"></ph> 公开 静态 最后一站 长整型 DEFAULT_TIMEOUT_IN_MILLIS

请求容器的默认超时时间(以毫秒为单位)。

常量值: <ph type="x-smartling-placeholder"></ph> 2000 年

公共方法

<ph type="x-smartling-placeholder"></ph> 公开 静态 ContainerOpener.ContainerFuture openContainer (TagManager tagManagerString containerIdContainerOpener.OpenType openTypeLong timeoutInMillis

最多等待 timeoutInMillis 次容器加载(非默认容器或全新容器) 具体取决于指定的 openType)。

如果打开类型为 PREFER_NON_DEFAULT,则为非默认值(保存或检索自 容器会加载,并且 ContainerFuture 会在解除阻塞后立即被解除屏蔽 会发生以下某种情况:

  • 已保存的容器已加载完毕
  • 如果没有已保存的容器,则会加载网络容器或出现网络错误。
  • 计时器到时结束。

如果发生网络错误或计时器到期,get() 可能会返回 默认容器

如果打开类型为 PREFER_FRESH,则返回新值(从 容器会加载,并且 ContainerFuture 会在解除阻塞后立即被解除屏蔽 会发生以下某种情况:

  • 已保存的新鲜容器即可加载完毕
  • 如果没有已保存的容器或保存的容器已过时,则网络容器 或出现网络连接错误。
  • 计时器到时结束。

如果发生网络错误或计时器到期,get() 可能会返回 默认容器或保存的过时容器

如果您使用指定的 containerId 第二次调用 openContainer, 系统将返回 ContainerFuture,其 get() 会返回 与第一次调用相同的容器。

参数
tagManager 需要针对其调用 openContainer 的 TagManager
containerId 要加载的容器的 ID
openType 选择如何打开容器
timeoutInMillis 等待加载容器所需的毫秒上限(从 已保存的商店)。如果为 null,将使用 DEFAULT_TIMEOUT_IN_MILLIS
返回
  • 一个对象的 get 方法将返回容器,但最多 超时,直到容器可用。

<ph type="x-smartling-placeholder"></ph> 公开 静态 无效 openContainer (TagManager tagManagerString tagManagerContainerOpener.OpenType tagManagerLong tagManagerContainerOpener.Notifier

最多等待 timeoutInMillis 次容器加载(非默认容器或全新容器) 具体取决于指定的 openType)。

如果打开类型为 PREFER_NON_DEFAULT,则为非默认值(保存或检索自 网络)容器加载并传递到通知程序。在出现以下情况时,系统会立即调用该通知程序: 会发生以下某种情况:

  • 已保存的容器已加载完毕
  • 如果没有已保存的容器,则会加载网络容器或出现网络错误。
  • 计时器到时结束。

如果发生网络错误或计时器过期,则传递到 containerAvailable(Container) 是一个默认容器。

如果打开类型为 PREFER_FRESH,则返回新值(从 网络)容器加载并传递到通知程序。在出现以下情况时,系统会立即调用该通知程序: 会发生以下某种情况:

  • 已保存的新鲜容器即可加载完毕
  • 如果没有保存的容器或保存的容器已过时,则加载网络容器 或出现网络错误。
  • 计时器到时结束。

如果发生网络错误或计时器过期,则传递到 containerAvailable(Container) 可能是默认容器,也可能是过时的已保存容器。

如果您使用指定的 containerId 第二次调用 openContainer(TagManager, String, ContainerOpener.OpenType, Long), 从上一次调用返回的同一容器将会立即传递到通知程序 可用。

参数
tagManager 需要针对其调用 openContainer 的 TagManager
containerId 要加载的容器的 ID
openType 选择如何打开容器
timeoutInMillis 等待加载容器所需的毫秒上限(从 已保存的存储区和/或网络)。如果为 null,将使用 DEFAULT_TIMEOUT_IN_MILLIS
通知程序 一个在容器可用时调用的通知程序。时间是 使用已保存的容器或网络容器(如果有)调用,并在超时之前加载。 否则,将使用默认容器调用它。可以通过 另一个线程。