Mit dem Preload-Manager können Sie Nutzern Inhalte schneller bereitstellen und so die Nutzerfreundlichkeit verbessern. Nutzer müssen dann weniger lange warten, wenn sie von einem Element zum nächsten wechseln. Außerdem können Sie die Dauer und das Ranking des Vorabladens für jedes Element anpassen.
In sozialen Medien wird dem Nutzer häufig eine Liste oder ein Karussell mit Media-Optionen angezeigt. Eine App kann beispielsweise ein Karussell mit kurzen Videos anzeigen. Wenn ein Video endet, wechselt die App zum nächsten. Wenn dem Nutzer das Video nicht gefällt, kann er zum nächsten oder vorherigen Video wischen.
Wenn Sie Videoinhalte nicht vorab laden, kann dies zu einer frustrierenden Nutzererfahrung führen. Der Nutzer sieht sich einige Medien an und muss dann warten, bis die nächsten Medien geladen werden.
Wenn Sie Inhalte jedoch zu aggressiv vorab laden, verschwenden Sie Strom und Netzwerkbandbreite für Inhalte, die der Nutzer möglicherweise nie abspielen wird.
DefaultPreloadManager kann Ihnen dabei helfen, diese Bedenken in Ihrer App auszugleichen. Der Preload-Manager arbeitet mit Ihrer App zusammen, um die Wichtigkeit der einzelnen Media-Elemente zu bestimmen und die entsprechende Menge im Voraus zu laden.
Arbeitsteilung
Wenn Sie DefaultPreloadManager verwenden, wird ein Teil der Arbeit von Ihrem Code und ein Teil vom Preload-Manager erledigt.
Ihre App muss Folgendes tun:
- Erstellen Sie die
ExoPlayer-Objekte der App mit demselbenDefaultPreloadManager.Builder-Objekt, das Sie zum Erstellen des Preload-Managers verwenden. Rufen SieDefaultPreloadManager.Builder.buildExoPlayer()auf, um einExoPlayerzu erstellen. - Dem Preload-Manager mitteilen, welche Media-Elemente er erfassen soll: Das muss nicht der gesamte Inhalt des Karussells sein. Du kannst dem Gerät einfach die ersten paar Elemente nennen, die abgespielt werden sollen. Während der Nutzer durch das Karussell navigiert, können Sie Media-Elemente hinzufügen und entfernen.
- Auf Anfragen des Preload-Managers antworten und ihm mitteilen, wie viel Inhalt für jeden Artikel vorab geladen werden soll.
Medien aus dem Preload-Manager abrufen, wenn der Nutzer mit der Wiedergabe eines Elements beginnt. Der Preload-Manager gibt Ihrer App ein
MediaSourcefür diesen Inhalt.Dem Preload-Manager den Index des aktuell wiedergegebenen Elements mitteilen: Anhand dieser Informationen ermittelt der Preload-Manager, wie nah sich die einzelnen Media-Elemente am aktuell wiedergegebenen Element befinden, und priorisiert das Vorabladen entsprechend dynamisch. Wenn der Nutzer zu einem neuen Element navigiert, aktualisieren Sie diesen Index mit dem Preload-Manager.
Geben Sie den Preload-Manager frei, wenn Sie ihn nicht mehr benötigen, um seine Ressourcen freizugeben.
Der Preload-Manager führt folgende Schritte aus:
- Darin werden alle Medienelemente gespeichert, die Ihre App hinzugefügt hat.
- Jedes Mal, wenn die Prioritäten aktualisiert werden, wird Ihre App durch Aufrufen einer von Ihrer App implementierten
TargetPreloadStatusControlabgefragt. Dadurch wird ermittelt, wie viel von jedem Media-Element geladen werden soll. - Nachdem die App abgefragt wurde, wird die entsprechende Menge jedes Media-Elements vorab geladen. Der Preload-Manager entscheidet, in welcher Reihenfolge das Element geladen wird. Dabei werden Artikel priorisiert, die dem Artikel, den der Nutzer gerade spielt, am ähnlichsten sind.
- Wenn die App Inhalte anfordert, stellt der Preload-Manager ein
MediaSourcemit allen bereits geladenen Inhalten bereit.
Workflow für den Preload-Manager
In diesem Abschnitt wird ein typischer Workflow für eine App beschrieben, die den Preload-Manager verwendet. In diesem Beispiel gehen wir davon aus, dass in der App ein Karussell mit kurzen Videos angezeigt wird. Das ausgewählte Video wird automatisch abgespielt. Der Nutzer kann das Karussell jedoch in beide Richtungen scrollen. Dadurch wird das aktuelle Video beendet und das Video, zu dem er scrollt, wird gestartet.
Alle diese Schritte werden auf den folgenden Seiten ausführlich beschrieben.
- Die App erstellt ein Steuerelement für den Vorladestatus des Ziels. Der Preload-Manager fragt dieses Steuerelement ab, um herauszufinden, wie viel von jedem Media-Element geladen werden soll.
- Die App erstellt ein
DefaultPreloadManager.Builderund übergibt die Steuerung des Zielvorladestatus. Die App verwendet dann den Builder, um den Preload-Manager zu erstellen. - Die App fügt dem Preload-Manager Media-Elemente hinzu. Die App stellt für jedes Element einen Index bereit, der die Position des Elements im Karussell angibt.
- Für jedes Media-Element ruft der Preload-Manager das Ziel-Preload-Steuerelement auf, um abzufragen, wie viel vom Element geladen werden soll. Die Zielvorabladesteuerung kann angeben, dass eine bestimmte Dauer von Inhalten geladen werden soll, dass nur die Metadaten des Artikels abgerufen werden sollen oder dass der Artikel zu diesem Zeitpunkt nicht abgerufen werden soll. Nachdem der Preload-Manager diese Informationen erhalten hat, beginnt er mit dem Laden der Media-Inhalte.
- Wenn der Nutzer mit der Wiedergabe von Inhalten beginnt, ruft die App den Preload-Manager auf, um eine
MediaSourcefür dieses Medienelement anzufordern. Die App ruft auchsetCurrentPlayingIndex()auf, um dem Preload-Manager mitzuteilen, welche Mediendatei gerade wiedergegeben wird, damit die Prioritäten der Mediendateien aktualisiert werden. - Immer wenn die Prioritäten des Preload-Managers aktualisiert werden, wird die Ziel-Preload-Steuerung noch einmal aufgerufen, um herauszufinden, wie viel von jedem Element geladen werden soll.
- Wenn die App das Karussell schließt, gibt sie den Preload-Manager kostenlos, um Ressourcen freizugeben.