Concepts du gestionnaire de préchargement

Le gestionnaire de préchargement vous permet d'offrir une meilleure expérience aux utilisateurs en leur fournissant du contenu plus rapidement, avec moins d'attente lorsqu'ils passent d'un élément à un autre. Il vous permet également de personnaliser la durée et le classement du préchargement par élément.

Dans les médias sociaux, une situation courante consiste à ce qu'une application affiche une liste ou un carrousel de choix multimédias à l'utilisateur. Par exemple, une application peut afficher un carrousel de courtes vidéos. Lorsqu'une vidéo se termine, l'application passe à la suivante. Si l'utilisateur n'aime pas la vidéo qu'il regarde, il peut balayer l'écran pour passer à la vidéo suivante ou précédente.

Si vous ne préchargez pas le contenu vidéo, l'expérience utilisateur peut être frustrante. L'utilisateur termine un contenu multimédia, puis doit attendre le chargement du suivant.

En revanche, si vous préchargez le contenu de manière trop agressive, vous gaspillez de l'énergie et de la bande passante réseau en chargeant du contenu que l'utilisateur ne lira peut-être jamais.

DefaultPreloadManager aide votre application à équilibrer ces préoccupations. Le gestionnaire de préchargement fonctionne avec votre application pour déterminer l'importance de chaque élément multimédia et charge la quantité appropriée à l'avance.

Répartition des tâches

Si vous utilisez DefaultPreloadManager, une partie du travail est effectuée par votre code et une autre par le gestionnaire de préchargement.

Votre application doit effectuer les opérations suivantes :

Le gestionnaire de préchargement effectue les opérations suivantes :

  • Il suit tous les éléments multimédias que votre application y a ajoutés.
  • Chaque fois que ses priorités sont mises à jour, il interroge votre application en appelant un TargetPreloadStatusControl implémenté par votre application. Il l'appelle pour savoir la quantité de chaque élément multimédia à charger.
  • Après avoir interrogé l'application, il précharge la quantité appropriée de chaque élément multimédia. Le gestionnaire de préchargement décide de l'ordre dans lequel charger l'élément. Il donne la priorité aux éléments les plus proches de l'élément que l'utilisateur est en train de lire.
  • Lorsque l'application demande du contenu, le gestionnaire de préchargement fournit un MediaSource avec le contenu déjà chargé.

Workflow du gestionnaire de préchargement

Cette section décrit un workflow typique pour une application qui utilise le gestionnaire de préchargement. Dans cet exemple, nous supposons que l'application affiche un carrousel de courtes vidéos. La vidéo sélectionnée est lue automatiquement, mais l'utilisateur peut faire défiler le carrousel dans les deux sens, ce qui arrête la vidéo en cours de lecture et lance la vidéo vers laquelle il fait défiler.

Toutes ces étapes sont abordées en détail dans les pages suivantes.

  1. L'application crée un contrôle de l'état de préchargement cible. Le gestionnaire de préchargement interroge ce contrôle pour savoir la quantité de chaque élément multimédia à charger.
  2. L'application crée un DefaultPreloadManager.Builder et transmet le contrôle de l'état de préchargement cible. L'application utilise ensuite le compilateur pour créer le gestionnaire de préchargement.
  3. L'application ajoute des éléments multimédias au gestionnaire de préchargement. L'application fournit un index pour chaque élément, en spécifiant sa position dans le carrousel.
  4. Pour chaque élément multimédia, le gestionnaire de préchargement appelle le contrôle de préchargement cible pour savoir la quantité de l'élément à charger. Le contrôle de préchargement cible peut indiquer de charger une certaine durée de contenu, de récupérer uniquement les métadonnées de l'élément ou de ne récupérer aucun élément pour le moment. Une fois que le gestionnaire de préchargement a obtenu ces informations, il commence à charger le contenu multimédia.
  5. Lorsque l'utilisateur commence à lire du contenu, l'application appelle le gestionnaire de préchargement pour demander un MediaSource pour cet élément multimédia. L'application appelle également setCurrentPlayingIndex() pour indiquer au gestionnaire de préchargement l'élément multimédia en cours de lecture, afin que les priorités des éléments multimédias soient mises à jour.
  6. Chaque fois que les priorités du gestionnaire de préchargement sont mises à jour, il appelle à nouveau le contrôle de préchargement cible pour savoir la quantité de chaque élément à charger.
  7. Lorsque l'application ferme le carrousel, elle libère le gestionnaire de préchargement pour libérer ses ressources.