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.
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. |