コンテナを開くためのヘルパークラス。
これは openContainer(String, Container.Callback)
のラッパーです
メソッドを提供します。
コンテナには次の 3 つの状態があります。
- デフォルト: アプリと一緒に出荷されるコンテナ(バイナリまたは (コンテナに変換される JSON ファイルなど)を返します。
- 最新でない: サーバーからダウンロードされたものの、最近ではないコンテナ。
- 最新: サーバーから最近ダウンロードされたコンテナ。
次の例では、呼び出し元が IP アドレスを取得するまで最大 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 | コンテナが使用可能になったときに通知を受け取るオブジェクト。 | |
enum | 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 メソッドがコンテナを返すオブジェクトです。ただし、 コンテナが使用可能になるまで TimeoutInMillis。
<ph type="x-smartling-placeholder"></ph> 一般公開 静的 無効 openContainer (TagManager tagManager、String tagManager、ContainerOpener.OpenType tagManager、Long tagManager、ContainerOpener.Notifier
コンテナが読み込まれるまで、最大で timeoutInMillis
時間待機します(デフォルト以外または最新)。
(指定された openType
に応じて異なります)。
オープンタイプが PREFER_NON_DEFAULT
の場合、デフォルト以外(保存または取得元)
コンテナが読み込まれて Notifier に渡されます。Notifier はできるだけ早く呼び出されます
次のいずれかが発生します。
- 保存されたコンテナが読み込まれます。
- 保存されたコンテナがない場合、ネットワーク コンテナが読み込まれるか、ネットワーク エラーが発生した場合に行われます。
- タイマーが期限切れになります
ネットワーク エラーが発生するかタイマーが期限切れになると、コンテナは
containerAvailable(Container)
はデフォルトのコンテナです。
オープンタイプが PREFER_FRESH
の場合、新規(保存または取得元)
コンテナが読み込まれて Notifier に渡されます。Notifier はできるだけ早く呼び出されます
次のいずれかが発生します。
- 読み込まれた新しいコンテナが読み込まれます。
- 保存されたコンテナがない場合や保存されたコンテナが古くなっている場合は、ネットワーク コンテナが読み込まれます。 またはネットワークエラーが発生したときに 応答します
- タイマーが期限切れになります
ネットワーク エラーが発生するかタイマーが期限切れになると、コンテナは
containerAvailable(Container)
は、デフォルトのコンテナか、古い保存済みコンテナの場合があります。
containerId
を指定して openContainer(TagManager, String, ContainerOpener.OpenType, Long)
をもう一度呼び出すと、
前の呼び出しで返されたものと同じコンテナが、できるだけ早く Notifier に渡されます。
提供します
パラメータ
tagManager | openContainer を呼び出す TagManager |
containerId | 読み込むコンテナの ID |
openType | コンテナを開く方法は |
timeoutInMillis | コンテナの読み込みを待機する最大時間(ミリ秒)を
保存済みの店舗やネットワーク)。null の場合、DEFAULT_TIMEOUT_IN_MILLIS が使用されます。 |
Notifier | コンテナが使用可能になると呼び出される Notifier。次のようになります。 保存済みコンテナまたはネットワーク コンテナ(使用可能な場合)で呼び出され、タイムアウトの前に読み込まれます。 それ以外の場合は、デフォルトのコンテナで呼び出されます。Notifier は API 呼び出しから 別のスレッドに移動できます。 |