Clase de ayuda para abrir contenedores.
Este es un wrapper alrededor de openContainer(String, Container.Callback)
para los usuarios que no necesitan el detallado nivel de control que proporciona.
Un contenedor puede estar en los siguientes tres estados:
- Predeterminado: es el contenedor que se envía con la app (un objeto binario contenedor o un archivo json que se convierta en un contenedor).
- Inactivo: Un contenedor que se descargó del servidor, pero no recientemente.
- Actualizado: un contenedor que se descargó del servidor recientemente.
Aquí se muestra un ejemplo en el que el emisor quiere esperar hasta 100 milisegundos para obtener contenedor no predeterminado (se 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 emisor desea recibir una notificación asíncrona cuando el contenedor está disponible, pero desea
especificar manualmente el tiempo de espera en 0.5 segundos, entonces el emisor debe subclasificar
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 muestra un objeto Container. | |
| interfaz | ContainerOpener.Notifier | Objeto que recibirá una notificación cuando un contenedor esté disponible para su uso. | |
| enum | ContainerOpener.OpenType | Preferencias para abrir un contenedor. | |
Resumen de constantes
| long | DEFAULT_TIMEOUT_IN_MILLIS | 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 anular |
openContainer(TagManager tagManager, String containerId, ContainerOpener.OpenType openType, Long timeoutInMillis, ContainerOpener.Notifier notifier)
|
Constantes
público estático final largo DEFAULT_TIMEOUT_IN_MILLIS
El tiempo de espera predeterminado en milisegundos para solicitar el contenedor.
Métodos públicos
público estático ContainerOpener.ContainerFuture . openContainer (TagManager tagManager, String containerId, ContainerOpener.OpenType openType, Long timeoutInMillis)
Espera hasta timeoutInMillis vez para que se cargue un contenedor (nuevo o no predeterminado).
según el openType especificado).
Si el tipo de apertura es PREFER_NON_DEFAULT, se muestra un valor no predeterminado (que se guarda o se recupera de
Network) se carga y ContainerFuture se desbloquea en cuanto
sucede una 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.
- se agota el tiempo de exposición.
Si se produce un error de red o se vence el temporizador, es posible que aparezca get().
un contenedor predeterminado.
Si el tipo de abierto es PREFER_FRESH, se muestra un nuevo (que se guarda o se recupera de
Network) se carga y ContainerFuture se desbloquea en cuanto
sucede una de las siguientes situaciones:
- se carga un contenedor nuevo guardado.
- Si no hay un contenedor guardado o está inactivo, un contenedor de red se cargan o se produce un error de red.
- se agota el tiempo de exposición.
Si se produce un error de red o se vence el temporizador, es posible que aparezca get().
un contenedor predeterminado
o un contenedor inactivo guardado.
Si llamas a openContainer por segunda vez con un containerId determinado,
Se mostrará un ContainerFuture cuyo get() mostrará
en el mismo contenedor que en la primera llamada.
Parámetros
| tagManager | el objeto TagManager en el que se llamará 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 hay que esperar para cargar un contenedor (desde
tienda guardada). Si es nulo, se usará DEFAULT_TIMEOUT_IN_MILLIS. |
Muestra
- un objeto cuyo método get devolverá el contenedor, pero puede bloquear hasta tiempo de esperaInMillis hasta que el contenedor esté disponible.
público estático anular openContainer (TagManager tagManager, String tagManager, ContainerOpener.OpenType tagManager, Long tagManager, ContainerOpener.Notifier
Espera hasta timeoutInMillis vez para que se cargue un contenedor (nuevo o no predeterminado).
según el openType especificado).
Si el tipo de apertura es PREFER_NON_DEFAULT, se muestra un valor no predeterminado (que se guarda o se recupera de
red) y se pasan al notificador. Se llama al notificador en cuanto
sucede una 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.
- se agota el tiempo de exposición.
Si ocurre un error de red o si el temporizador vence, el contenedor se pasa a
containerAvailable(Container) es un contenedor predeterminado.
Si el tipo de abierto es PREFER_FRESH, se muestra un nuevo (que se guarda o se recupera de
red) y se pasan al notificador. Se llama al notificador en cuanto
sucede una de las siguientes situaciones:
- se carga un contenedor nuevo guardado.
- Si no hay un contenedor guardado o está inactivo, se carga un contenedor de red. o se produce un error de red.
- se agota el tiempo de exposición.
Si ocurre un error de red o si el temporizador vence, el contenedor se pasa 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 devuelto de la llamada anterior se pasará al notificador tan pronto como
está disponible.
Parámetros
| tagManager | el objeto TagManager en el que se llamará 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 hay que esperar para cargar un contenedor (desde
de la red o el almacén guardado). Si es nulo, se usará DEFAULT_TIMEOUT_IN_MILLIS. |
| notificador | un notificador al que se llamará cuando el contenedor esté disponible. Será Se llama con el contenedor guardado o de red, si está disponible y si se cargó antes del tiempo de espera. De lo contrario, se llamará con el contenedor predeterminado. Se puede llamar al notificador desde un un subproceso diferente. |