ContainerOpener

public クラス ContainerOpener

コンテナを開くヘルパークラス。

これは、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
openContainerTagManager tagManagerString containerIdContainerOpener.OpenType openTypeLong timeoutInMillis
static void
openContainerTagManager tagManagerString containerIdContainerOpener.OpenType openTypeLong timeoutInMillisContainerOpener.Notifier notifier

定数

public static final long DEFAULT_TIMEOUT_IN_MILLIS

コンテナをリクエストする際のデフォルトのタイムアウト(ミリ秒単位)。

定数値: 2000

パブリック メソッド

public static ContainerOpener.ContainerFuture openContainer (TagManager tagManagerString containerIdContainerOpener.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 tagManagerString tagManagerContainerOpener.OpenType tagManagerLong 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 は別のスレッドから呼び出される場合があります。