Conceptos del administrador de precarga

El administrador de carga previa te ayuda a brindarles a los usuarios una mejor experiencia, ya que les muestra el 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 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. Y si al usuario no le gusta el video que está mirando, puede deslizar el dedo para ir al siguiente o al anterior.

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

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

DefaultPreloadManager ayuda a tu app a equilibrar estas preocupaciones. El administrador de carga previa trabaja con tu app para decidir la importancia de cada elemento multimedia y carga la cantidad adecuada por adelantado.

División del trabajo

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

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 agregó a ella.
  • Cada vez que se actualizan sus prioridades, consulta tu app llamando a un TargetPreloadStatusControl implementado por tu app 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 carga previa decide en qué orden cargar el elemento. Prioriza los elementos que están más cerca del elemento que está reproduciendo 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 qué cantidad 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.
  3. La app agrega elementos multimedia al administrador de carga previa. La app proporciona un índice para cada elemento, que especifica su posición en el carrusel.
  4. Para cada elemento multimedia, el administrador de carga previa llama al control de carga previa de destino para consultar qué cantidad del elemento se debe cargar. El control de carga previa objetivo puede indicar que se cargue una cierta duración de contenido, que solo se recupere los metadatos del elemento o que no se recupere nada de ese elemento 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 objeto MediaSource para ese elemento multimedia. La app también llama a setCurrentPlayingIndex() para indicarle 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 qué cantidad de cada elemento se debe cargar.
  7. Cuando la app cierra el carrusel, libera el administrador de carga previa para liberar sus recursos.