用于打开容器的辅助类。
这是 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 tagManager、String containerId、ContainerOpener.OpenType openType、Long timeoutInMillis)
|
| 静态 无效 |
openContainer(TagManager tagManager、String containerId、ContainerOpener.OpenType openType、Long timeoutInMillis、ContainerOpener.Notifier notifier)
|
常量
<ph type="x-smartling-placeholder"></ph> 公开 静态 最后一站 长整型 DEFAULT_TIMEOUT_IN_MILLIS
请求容器的默认超时时间(以毫秒为单位)。
公共方法
<ph type="x-smartling-placeholder"></ph> 公开 静态 ContainerOpener.ContainerFuture openContainer (TagManager tagManager、String containerId、ContainerOpener.OpenType openType、Long 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 tagManager、String tagManager、ContainerOpener.OpenType tagManager、Long tagManager、ContainerOpener.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。 |
| 通知程序 | 一个在容器可用时调用的通知程序。时间是 使用已保存的容器或网络容器(如果有)调用,并在超时之前加载。 否则,将使用默认容器调用它。可以通过 另一个线程。 |