Conceptos del administrador de precarga

El administrador de carga previa te ayuda a brindarles a los usuarios una mejor experiencia, ya que les ofrece contenido más rápido y con menos espera cuando cambian de un elemento a otro. También te permite personalizar la duración y la clasificación de la carga previa por elemento.

Una situación común en las redes sociales es que una app le muestra al usuario una lista o un carrusel de opciones de contenido multimedia. Por ejemplo, una app podría mostrar un carrusel de videos cortos. Cuando termina un video, la app cambia al siguiente. Si al usuario no le gusta el video que está mirando, puede deslizar el dedo para ver el siguiente o el anterior.

Si no cargas previamente el contenido de video, esto puede generar una experiencia frustrante para el usuario. El usuario termina de ver algún contenido multimedia y, luego, debe esperar a que se cargue el siguiente.

Por otro lado, si cargas previamente el contenido de forma demasiado agresiva, se desperdician energía y ancho de banda de la red cargando contenido que es posible que el usuario nunca reproduzca.

DefaultPreloadManager ayuda a tu app a equilibrar estas inquietudes. El administrador de carga previa trabaja con tu app para decidir qué tan importante es cada elemento multimedia y carga la cantidad adecuada con anticipación.

División del trabajo

Si usas DefaultPreloadManager, tu código realiza parte del trabajo y el administrador de carga previa realiza el resto.

Tu app debe hacer lo siguiente:

El administrador de carga previa hace lo siguiente:

  • Realiza un seguimiento de todos los elementos multimedia que tu app le agregó.
  • Cada vez que se actualizan sus prioridades, consulta tu app llamando a un TargetPreloadStatusControl implementado por tu app. Llama a esto para averiguar cuánto de cada elemento multimedia se debe cargar.
  • Después de consultar la app, carga previamente la cantidad adecuada de cada elemento multimedia. El administrador de carga previa decide en qué orden cargar el elemento. Prioriza los elementos que están más cerca del elemento que reproduce el usuario.
  • Cuando la app solicita contenido, el administrador de carga previa proporciona un MediaSource con el contenido que ya se cargó.

Flujo de trabajo del administrador de carga previa

En esta sección, se describe un flujo de trabajo típico para una app que usa el administrador de carga previa. En este ejemplo, suponemos que la app muestra un carrusel de videos cortos. El video seleccionado se reproduce automáticamente, pero el usuario puede desplazarse por el carrusel en cualquier dirección, lo que detiene el video que se estaba reproduciendo y comienza el video al que se desplaza.

Todos estos pasos se analizan en detalle en las siguientes páginas.

  1. La app crea un control de estado de carga previa de destino. El administrador de carga previa consulta este control para averiguar cuánto de cada elemento multimedia se debe cargar.
  2. La app crea un DefaultPreloadManager.Builder y pasa el control de estado de carga previa de destino. Luego, la app usa el compilador para crear el administrador de carga previa manager.
  3. La app agrega elementos multimedia al administrador de carga previa. La app proporciona un índice para cada elemento, que especifica la posición del elemento en el carrusel.
  4. Para cada elemento multimedia, el administrador de carga previa llama al control de carga previa de destino para consultar cuánto del elemento se debe cargar. El control de carga previa de destino podría indicar que se cargue una cierta duración del contenido, que solo se recuperen los metadatos del elemento o que no se recupere ninguno de esos elementos en este momento. Después de que el administrador de carga previa obtiene esta información, comienza a cargar el contenido multimedia.
  5. Cuando el usuario comienza a reproducir contenido, la app llama al administrador de carga previa para solicitar un MediaSource para ese elemento multimedia. La app también llama a setCurrentPlayingIndex() para informarle al administrador de carga previa qué elemento multimedia se está reproduciendo, de modo que se actualicen las prioridades de los elementos multimedia.
  6. Cada vez que se actualizan las prioridades del administrador de carga previa, este vuelve a llamar al control de carga previa de destino para averiguar cuánto de cada elemento se debe cargar.
  7. Cuando la app cierra el carrusel, libera el administrador de carga previa para liberar sus recursos.