Abre contenedores

clase pública ContainerOpener

Clase de ayuda para abrir contenedores.

Este es un wrapper alrededor del método openContainer(String, Container.Callback) para los usuarios que no necesitan el nivel de control detallado que proporciona.

Un contenedor puede tener tres estados:

  • Valor predeterminado: Este es el contenedor que se envía con la app (ya sea un contenedor binario o un archivo JSON que se convierte en un contenedor).
  • Inactivo: Un contenedor que se descargó del servidor, pero no recientemente.
  • Fresh: Un contenedor que se descargó del servidor recientemente.

A continuación, se muestra un ejemplo en el que el emisor quiere esperar hasta 100 milisegundos para obtener el contenedor no predeterminado (y recupera el contenedor predeterminado si se agota el tiempo de espera).

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

Si el llamador desea que se le notifique de forma asíncrona cuando el contenedor esté disponible, pero desea especificar manualmente el tiempo de espera en 0.5 segundos, el llamador debe crear una subclase de ContainerOpener.Notifier. Ejemplo 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.
         }
       });
 

Resumen de clases anidadas

Interfaz ContainerOpener.ContainerFuture Un objeto que mostrará un contenedor
Interfaz ContainerOpener.Notifier Objeto que recibirá una notificación cuando un contenedor esté disponible para usar
enum ContainerOpener.OpenType Preferencias para abrir un contenedor. 

Resumen de constantes

long DEFAULT_TIMEOUT_IN_MILLIS Es el tiempo de espera predeterminado en milisegundos para solicitar el contenedor.

Resumen de métodos públicos

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

Constantes

público estático final largo DEFAULT_TIMEOUT_IN_MILLIS

Es el tiempo de espera predeterminado en milisegundos para solicitar el contenedor.

Valor de la constante: 2000

Métodos públicos

estático público ContainerOpener.ContainerFuture openContainer (TagManager tagManager, String tagManager, ContainerOpener.OpenType tagManager{/14opentime1}

Espera hasta timeoutInMillis vez para que se cargue un contenedor (no predeterminado o actualizado, según el openType especificado).

Si el tipo abierto es PREFER_NON_DEFAULT, se carga un contenedor no predeterminado (guardado o recuperado de la red) y ContainerFuture se desbloquea en cuanto ocurre alguna de las siguientes situaciones:

  • se carga un contenedor guardado.
  • Si no hay un contenedor guardado, se carga un contenedor de red o se produce un error de red.
  • antes de que finalice el temporizador.

Si se produce un error de red o vence el temporizador, get() puede mostrar un contenedor predeterminado.

Si el tipo abierto es PREFER_FRESH, se carga un contenedor nuevo (guardado o recuperado de la red) y ContainerFuture se desbloquea en cuanto ocurre alguna de las siguientes situaciones:

  • se carga un contenedor nuevo guardado.
  • Si no hay un contenedor guardado o un contenedor guardado está inactivo, se carga un contenedor de red o se produce un error de red.
  • antes de que finalice el temporizador.

Si se produce un error de red o vence el temporizador, get() puede mostrar un contenedor predeterminado o un contenedor inactivo guardado.

Si llamas a openContainer por segunda vez con un containerId determinado, se mostrará una ContainerFuture cuyo get() mostrará el mismo contenedor que la primera llamada.

Parámetros
tagManager El TagManager en el que se llama a openContainer
containerId el ID del contenedor que se cargará
openType la elección de cómo abrir el contenedor
timeoutInMillis la cantidad máxima de milisegundos que se espera para cargar el contenedor (desde el almacén guardado). Si es nulo, se usará DEFAULT_TIMEOUT_IN_MILLIS.
Devuelve
  • un objeto cuyo método get mostrará el contenedor, pero puede bloquear hasta timeoutInMillis hasta que el contenedor esté disponible.

public static openContainerTagManagertagManagerContainerOpener.OpenTypeContainerOpener.Notifier

Espera hasta timeoutInMillis vez para que se cargue un contenedor (no predeterminado o actualizado, según el openType especificado).

Si el tipo de apertura es PREFER_NON_DEFAULT, se carga un contenedor no predeterminado (guardado o recuperado de la red) y se pasa al notificador. Se llama al notificador en cuanto ocurre alguna de las siguientes situaciones:

  • se carga un contenedor guardado.
  • Si no hay un contenedor guardado, se carga un contenedor de red o se produce un error de red.
  • antes de que finalice el temporizador.

Si se produce un error de red o vence el temporizador, el contenedor que se pasa a containerAvailable(Container) es un contenedor predeterminado.

Si el tipo de apertura es PREFER_FRESH, se carga un contenedor nuevo (guardado o recuperado de la red) y se pasa al notificador. Se llama al notificador en cuanto ocurre alguna de las siguientes situaciones:

  • se carga un contenedor nuevo guardado.
  • Si no hay un contenedor guardado o un contenedor guardado está inactivo, se carga un contenedor de red o se produce un error de red.
  • antes de que finalice el temporizador.

Si se produce un error de red o el temporizador vence, el contenedor que se pasó a containerAvailable(Container) puede ser un contenedor guardado predeterminado o inactivo.

Si llamas a openContainer(TagManager, String, ContainerOpener.OpenType, Long) por segunda vez con un containerId determinado, el mismo contenedor que se mostró en la llamada anterior se pasará al notificador en cuanto esté disponible.

Parámetros
tagManager El TagManager en el que se llama a openContainer
containerId el ID del contenedor que se cargará
openType la elección de cómo abrir el contenedor
timeoutInMillis la cantidad máxima de milisegundos que se espera para cargar el contenedor (de la tienda o la red guardadas). Si es nulo, se usará DEFAULT_TIMEOUT_IN_MILLIS.
notificador un notificador al que se llamará cuando el contenedor esté disponible. Se llamará con el contenedor guardado o de red, si está disponible y se carga antes del tiempo de espera. De lo contrario, se llamará con el contenedor predeterminado. Se puede llamar al notificador desde otro subproceso.