Concepts du gestionnaire de préchargement

Le gestionnaire de préchargement vous aide à 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.

Sur les réseaux sociaux, il est courant qu'une application affiche une liste ou un carrousel de choix multimédias à l'utilisateur. Par exemple, une application peut afficher un carrousel de vidéos courtes. Lorsqu'une vidéo se termine, l'application passe à la suivante. Et 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 de regarder 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 pour charger du contenu que l'utilisateur ne lira peut-être jamais.

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

Division du travail

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 permet de suivre 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 combien 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 de chargement des éléments. Il donne la priorité aux éléments les plus proches de celui 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 type pour une application qui utilise le gestionnaire de préchargement. Dans cet exemple, nous partons du principe que l'application affiche un carrousel de vidéos courtes. 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 celle sur laquelle il s'arrête.

Toutes ces étapes sont décrites 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 déterminer 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, 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 déterminer la quantité d'élément à charger. La commande 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 déterminer 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.