ContainerOpener

classe pública ContainerOpener

Classe auxiliar para abrir contêineres.

Este é um wrapper em torno de openContainer(String, Container.Callback) para usuários que não precisam do alto nível de controle que ele oferece.

Há três estados em que um contêiner pode estar:

  • Padrão: é o contêiner que acompanha o app (um binário contêiner ou um arquivo json que é convertido em um contêiner).
  • Antigo: um contêiner que foi transferido por download do servidor, mas não recentemente.
  • Atual: um contêiner do qual foi feito o download do servidor recentemente.

Aqui está um exemplo em que o autor da chamada quer esperar até 100 milissegundos para receber a contêiner não padrão (a recuperação do contêiner padrão se ele expirar).

   ContainerFuture future =
       ContainerOpener.openContainer(tagManager, containerId, OpenType.PREFER_NON_DEFAULT, 100);
   Container container = future.get();
 

Se o autor da chamada quiser receber uma notificação assíncrona quando o contêiner estiver disponível, mas quiser especificar manualmente o tempo limite para 0,5 segundo, o autor da chamada deve criar uma subclasse ContainerOpener.Notifier: Exemplo de uso:

   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.
         }
       });
 

Resumo de classes aninhadas

interface ContainerOpener.ContainerFuture Um objeto que retornará um Container.
interface ContainerOpener.Notifier Objeto que receberá uma notificação quando um contêiner estiver disponível para uso.
enum ContainerOpener.OpenType Preferências para abrir um contêiner.

Resumo da constante

long DEFAULT_TIMEOUT_IN_MILLIS O tempo limite padrão em milissegundos para solicitar o contêiner.

Resumo do método público

estática ContainerOpener.ContainerFuture
openContainer(TagManager tagManager, String containerId, ContainerOpener.OpenType openType, Long timeoutInMillis)
estática anular
openContainer(TagManager tagManager, String containerId, ContainerOpener.OpenType openType, Long timeoutInMillis, ContainerOpener.Notifier notifier)

Constantes

públicas estática final. longos DEFAULT_TIMEOUT_IN_MILLIS

O tempo limite padrão em milissegundos para solicitar o contêiner.

Valor constante: 2.000

Métodos públicos

públicas estática ContainerOpener.ContainerFuture openContainer (TagManager tagManager, String containerId, ContainerOpener.OpenType openType, Long timeoutInMillis)

Aguarda até timeoutInMillis vez para um contêiner ser carregado (não padrão ou atualizado) dependendo do openType especificado).

Se o tipo aberto for PREFER_NON_DEFAULT, um valor não padrão (salvo ou recuperado do network) é carregado e o ContainerFuture é desbloqueado assim que uma das seguintes situações acontece:

  • um contêiner salvo é carregado.
  • se não houver um contêiner salvo, um contêiner de rede será carregado ou um erro de rede vai ocorrer.
  • o timer expirar.

Se ocorrer um erro de rede ou o timer expirar, get() pode retornar. um contêiner padrão.

Se o tipo aberto for PREFER_FRESH, um arquivo novo (salvo ou recuperado do network) é carregado e o ContainerFuture é desbloqueado assim que uma das seguintes situações acontece:

  • um novo contêiner salvo é carregado.
  • se não houver um contêiner salvo ou se o contêiner salvo estiver desatualizado, um contêiner de rede será carregado ou se ocorrer um erro de rede.
  • o timer expirar.

Se ocorrer um erro de rede ou o timer expirar, get() pode retornar. um contêiner padrão ou um contêiner desatualizado salvo.

Se você chamar openContainer uma segunda vez com um determinado containerId, um ContainerFuture será retornado, e get() retornará um no mesmo contêiner da primeira chamada.

Parâmetros
tagManager o TagManager em que o openContainer
containerId o ID do contêiner a ser carregado
openType a escolha de como abrir o contêiner
timeoutInMillis o número máximo de milissegundos a aguardar para carregar o contêiner (de salva na loja). Se nulo, DEFAULT_TIMEOUT_IN_MILLIS será usado.
Retorna
  • um objeto cujo método GET retornará o contêiner, mas pode bloquear até tempo limiteInMillis até que o contêiner esteja disponível.

públicas estática anular openContainer (TagManager tagManager, String tagManager, ContainerOpener.OpenType tagManager, Long tagManager, ContainerOpener.Notifier

Aguarda até timeoutInMillis vez para um contêiner ser carregado (não padrão ou atualizado) dependendo do openType especificado).

Se o tipo aberto for PREFER_NON_DEFAULT, um valor não padrão (salvo ou recuperado do rede) é carregado e transmitido ao notificador. O notificador é chamado assim que uma das seguintes situações acontece:

  • um contêiner salvo é carregado.
  • se não houver um contêiner salvo, um contêiner de rede será carregado ou um erro de rede vai ocorrer.
  • o timer expirar.

Se ocorrer um erro de rede ou o timer expirar, o contêiner containerAvailable(Container) é um contêiner padrão.

Se o tipo aberto for PREFER_FRESH, um arquivo novo (salvo ou recuperado do rede) é carregado e transmitido ao notificador. O notificador é chamado assim que uma das seguintes situações acontece:

  • um novo contêiner salvo é carregado.
  • Se não houver um contêiner salvo ou se o contêiner salvo estiver desatualizado, um contêiner de rede será carregado ou se ocorre um erro de rede.
  • o timer expirar.

Se ocorrer um erro de rede ou o timer expirar, o contêiner containerAvailable(Container) pode ser um contêiner salvo padrão ou desatualizado.

Se você chamar openContainer(TagManager, String, ContainerOpener.OpenType, Long) uma segunda vez com um determinado containerId, o mesmo contêiner retornado da chamada anterior será transmitido ao notificador assim que quando ele está disponível.

Parâmetros
tagManager o TagManager em que o openContainer
containerId o ID do contêiner a ser carregado
openType a escolha de como abrir o contêiner
timeoutInMillis o número máximo de milissegundos a aguardar para carregar o contêiner (de loja e/ou rede salva). Se nulo, DEFAULT_TIMEOUT_IN_MILLIS será usado.
notificador um notificador que será chamado quando o contêiner estiver disponível. Será chamado com o contêiner salvo ou de rede, se disponível e carregado antes do tempo limite. Caso contrário, ele será chamado com o contêiner padrão. O notificador pode ser chamado de um um thread diferente.