コンテナを開くヘルパークラス。
これは、openContainer(String, Container.Callback)
メソッドのラッパーであり、詳細な制御を必要としないユーザーを対象としています。
コンテナには次の 3 つの状態があります。
- デフォルト: これはアプリに付属するコンテナです(バイナリ コンテナ、またはコンテナに変換された 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 | コンテナが使用可能になったときに通知を受け取るオブジェクト。 | |
enum | ContainerOpener.OpenType | コンテナを開くための設定。 |
定数の概要
long | DEFAULT_TIMEOUT_IN_MILLIS | コンテナをリクエストする際のデフォルトのタイムアウト(ミリ秒単位)。 |
パブリック メソッドの概要
static ContainerOpener.ContainerFuture |
openContainer(TagManager tagManager、String containerId、ContainerOpener.OpenType openType、Long timeoutInMillis)
|
static void |
openContainer(TagManager tagManager、String containerId、ContainerOpener.OpenType openType、Long timeoutInMillis、ContainerOpener.Notifier notifier)
|
定数
public static final long DEFAULT_TIMEOUT_IN_MILLIS
コンテナをリクエストする際のデフォルトのタイムアウト(ミリ秒単位)。
パブリック メソッド
public static ContainerOpener.ContainerFuture openContainer (TagManager tagManager、String containerId、ContainerOpener.OpenType opentime4opentime4
コンテナが読み込まれるまで最大 timeoutInMillis
時間待ちます(指定された openType
に応じて、デフォルト以外または新しい)。
オープンタイプが PREFER_NON_DEFAULT
の場合、デフォルト以外の(保存またはネットワークから取得)コンテナが読み込まれ、次のいずれかが発生するとすぐに ContainerFuture のブロックが解除されます。
- 保存されたコンテナが読み込まれます。
- 保存されたコンテナがない場合、ネットワーク コンテナが読み込まれるか、ネットワーク エラーが発生します。
- タイマーが切れます。
ネットワーク エラーが発生した場合やタイマーが切れると、get()
はデフォルトのコンテナを返すことがあります。
オープンタイプが PREFER_FRESH
の場合、新しい(保存またはネットワークから取得した)コンテナが読み込まれ、次のいずれかが発生するとすぐに ContainerFuture のブロックが解除されます。
- 保存された新しいコンテナが読み込まれます。
- 保存されたコンテナがない場合や、保存されたコンテナが最新ではない場合、ネットワーク コンテナが読み込まれるか、ネットワーク エラーが発生します。
- タイマーが切れます。
ネットワーク エラーが発生した場合やタイマーが切れると、get()
はデフォルトのコンテナまたは保存された古いコンテナを返すことがあります。
指定された containerId
を使って 2 回目の openContainer
を呼び出すと、ContainerFuture
が返されます。この get()
は、最初の呼び出しと同じコンテナを返します。
パラメータ
tagManager | openContainer を呼び出す TagManager |
containerId | 読み込むコンテナの ID |
openType | コンテナを開く方法を選択できます |
timeoutInMillis | (保存済みストアから)コンテナを読み込む際に待機する最大時間(ミリ秒)。null の場合は、DEFAULT_TIMEOUT_IN_MILLIS が使用されます。 |
戻り値
- get メソッドがコンテナを返すものの、コンテナが利用可能になるまで最大 timeoutInMillis をブロックできるオブジェクト。
public static void openContainer (TagManager tagManager、String tagManager、ContainerOpener.OpenType tagManager、Long Container timeoutifiers tagManagerContainerOpener.Notifier
コンテナが読み込まれるまで最大 timeoutInMillis
時間待ちます(指定された openType
に応じて、デフォルト以外または新しい)。
オープンタイプが PREFER_NON_DEFAULT
の場合、デフォルト以外の(保存またはネットワークから取得)コンテナが読み込まれ、通知機能に渡されます。Notifier は、次のいずれかが発生するとすぐに呼び出されます。
- 保存されたコンテナが読み込まれます。
- 保存されたコンテナがない場合、ネットワーク コンテナが読み込まれるか、ネットワーク エラーが発生します。
- タイマーが切れます。
ネットワーク エラーが発生した場合やタイマーが切れると、containerAvailable(Container)
に渡されたコンテナがデフォルトのコンテナになります。
オープン タイプが PREFER_FRESH
の場合、新しい(保存またはネットワークから取得)コンテナが読み込まれ、 Notifier に渡されます。Notifier は、次のいずれかが発生するとすぐに呼び出されます。
- 保存された新しいコンテナが読み込まれます。
- 保存されたコンテナがない場合や、保存されたコンテナが最新ではない場合、ネットワーク コンテナが読み込まれるか、ネットワーク エラーが発生します。
- タイマーが切れます。
ネットワーク エラーが発生した場合やタイマーが切れた場合、containerAvailable(Container)
に渡されるコンテナはデフォルトまたは古い保存済みコンテナになります。
指定された containerId
を使って 2 回目の openContainer(TagManager, String, ContainerOpener.OpenType, Long)
を呼び出すと、利用可能になり次第、前の呼び出しから返された同じコンテナが通知機能に渡されます。
パラメータ
tagManager | openContainer を呼び出す TagManager |
containerId | 読み込むコンテナの ID |
openType | コンテナを開く方法を選択できます |
timeoutInMillis | (保存済みストアやネットワークから)コンテナを読み込む際に待機する最大時間(ミリ秒)。null の場合は、DEFAULT_TIMEOUT_IN_MILLIS が使用されます。 |
Notifier | コンテナが利用可能になったときに呼び出される通知子。保存済みコンテナまたはネットワーク コンテナ(使用可能な場合)で呼び出され、タイムアウトの前に読み込まれます。それ以外の場合は、デフォルトのコンテナで呼び出されます。Notifier は別のスレッドから呼び出される場合があります。 |