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 :
- Créez les objets
ExoPlayerde l'application à l'aide du même objetDefaultPreloadManager.Builderque celui que vous utilisez pour créer le gestionnaire de préchargement. AppelezDefaultPreloadManager.Builder.buildExoPlayer()pour créer unExoPlayer. - Indiquez au gestionnaire de préchargement chaque élément multimédia qu'il doit suivre. Il ne s'agit peut-être pas de tout le contenu du carrousel. Vous pouvez simplement lui indiquer les premiers éléments à lire. À mesure que l'utilisateur parcourt le carrousel, vous pouvez ajouter et supprimer des éléments multimédias du pool du gestionnaire de préchargement.
- Répondez aux requêtes du gestionnaire de préchargement en indiquant la quantité de contenu à précharger pour chaque élément.
Récupérez les contenus multimédias auprès du gestionnaire de préchargement lorsque l'utilisateur commence à lire un élément. Le gestionnaire de préchargement fournit à votre application un
MediaSourcepour ce contenu.Indiquez au gestionnaire de préchargement l'index de l'élément en cours de lecture. Ces informations sont utilisées par le gestionnaire de préchargement pour déterminer la proximité de chaque élément multimédia par rapport à l'élément en cours de lecture et pour hiérarchiser dynamiquement le préchargement en conséquence. Lorsque l'utilisateur accède à un nouvel élément, mettez à jour cet index avec le gestionnaire de préchargement.
Libérez le gestionnaire de préchargement lorsque vous n'en avez plus besoin, ce qui libère ses ressources.
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
TargetPreloadStatusControlimplé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
MediaSourceavec 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.
- 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.
- L'application crée un
DefaultPreloadManager.Builderet 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. - 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.
- 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.
- Lorsque l'utilisateur commence à lire du contenu, l'application appelle le gestionnaire de préchargement
pour demander un
MediaSourcepour cet élément multimédia. L'application appelle égalementsetCurrentPlayingIndex()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. - 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.
- Lorsque l'application ferme le carrousel, elle libère le gestionnaire de préchargement pour libérer ses ressources.