Conceptos del administrador de precarga

El administrador de precarga te ayuda a brindarles a los usuarios una mejor experiencia, ya que les muestra el contenido más rápido y con menos tiempo de 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 muestre una lista o un carrusel de opciones de contenido multimedia al usuario. 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 pasar al siguiente o al anterior.

Si no precargas el contenido de video, la experiencia del usuario puede ser frustrante. El usuario termina de reproducir un contenido multimedia y, luego, debe esperar a que se cargue el siguiente.

Por otro lado, si precargas el contenido de forma demasiado agresiva, se desperdiciará energía y ancho de banda de red para cargar contenido que el usuario tal vez nunca reproduzca.

DefaultPreloadManager ayuda a tu app a equilibrar estas inquietudes. El administrador de precarga 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 precarga, otra parte.

Tu app debe hacer lo siguiente:

El administrador de precarga hace lo siguiente:

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

Flujo de trabajo del administrador de precarga

En esta sección, se describe un flujo de trabajo típico para una app que usa el administrador de precarga. 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 precarga objetivo. El administrador de precarga consulta este control para averiguar qué cantidad de cada elemento multimedia se debe cargar.
  2. La app crea un DefaultPreloadManager.Builder y pasa el control de estado de precarga de destino. Luego, la app usa el compilador para crear el administrador de precarga.
  3. La app agrega elementos multimedia al administrador de precarga. La app proporciona un índice para cada elemento, que especifica su posición en el carrusel.
  4. Para cada elemento multimedia, el administrador de precarga llama al control de precarga de destino para consultar qué parte del elemento se debe cargar. El control de precarga de destino podría indicar que se cargue una duración determinada de contenido, que solo se recuperen los metadatos del elemento o que no se recupere nada de ese elemento en este momento. Después de que el administrador de precarga obtiene esta información, comienza a cargar el contenido multimedia.
  5. Cuando el usuario comienza a reproducir contenido, la app llama al administrador de precarga para solicitar un MediaSource para ese elemento multimedia. La app también llama a setCurrentPlayingIndex() para indicarle al administrador de precarga 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 precarga, este vuelve a llamar al control de precarga de destino para averiguar cuánto de cada elemento se debe cargar.
  7. Cuando la app cierra el carrusel, libera el administrador de precarga para liberar sus recursos.