開啟容器的輔助類別。
這是 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)
|
靜態 void |
openContainer(TagManager tagManager、String containerId、ContainerOpener.OpenType openType、Long timeoutInMillis、ContainerOpener.Notifier notifier)
|
常數
公開 靜態 最終 長 DEFAULT_TIMEOUT_IN_MILLIS
要求容器的預設逾時時間 (以毫秒為單位)。
公用方法
公開 靜態 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 | 載入容器所需等待的毫秒數上限 (從
「已儲存的商店」)。如果是空值,則會使用 DEFAULT_TIMEOUT_IN_MILLIS 。 |
傳回
- 其 get 方法會傳回容器,但最多可封鎖 timeoutInMillis 直到容器可用為止。
公開 靜態 void openContainer (TagManager tagManager、String tagManager、ContainerOpener.OpenType tagManager、Long tagManager、Long tagManagerOpener.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 | 載入容器所需等待的毫秒數上限 (從
儲存商店和/或網路)。如果是空值,則會使用 DEFAULT_TIMEOUT_IN_MILLIS 。 |
通知器 | 有容器可用時,系統會呼叫此通知器。 呼叫已儲存的或網路容器 (如果可用且在逾時前載入)。 否則會以預設容器呼叫。該通知器可能從 不同的討論串 |