Konzepte für den Preload-Manager

Mit dem Preload Manager können Sie die Nutzerfreundlichkeit verbessern, indem Sie Inhalte schneller bereitstellen und die Wartezeit beim Wechsel von einem Element zu einem anderen verkürzen. Außerdem können Sie die Dauer und das Ranking des Vorabladens pro Element anpassen.

In sozialen Medien ist es üblich, dass eine App dem Nutzer eine Liste oder ein Karussell mit Medienoptionen anzeigt. Eine App könnte beispielsweise ein Karussell mit kurzen Videos anzeigen. Wenn ein Video zu Ende ist, wechselt die App zum nächsten. Und wenn Nutzern das Video, das sie sich ansehen, nicht gefällt, wischen sie vielleicht zum nächsten oder vorherigen Video.

Wenn Sie Videoinhalte nicht vorab laden, kann dies zu einer frustrierenden Nutzererfahrung führen. Der Nutzer ist mit einem Medium fertig und muss dann warten, bis das nächste Medium geladen ist.

Wenn du die Inhalte jedoch zu aggressiv vorlädst, werden Energie und Netzwerkbandbreite für das Laden von Inhalten verschwendet, die der Nutzer möglicherweise nie abspielt.

DefaultPreloadManager hilft Ihnen, diese Bedenken auszuräumen. Der Preload Manager entscheidet gemeinsam mit Ihrer App, wie wichtig die einzelnen Mediendateien sind, und lädt die entsprechende Menge im Voraus.

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 demselben DefaultPreloadManager.Builder-Objekt, das Sie zum Erstellen des Preload-Managers verwenden. Rufen Sie DefaultPreloadManager.Builder.buildExoPlayer() auf, um eine ExoPlayer zu erstellen.
  • Teilen Sie dem Preload-Manager mit, welche Mediendateien er im Blick behalten soll. Das müssen nicht alle Inhalte im Karussell sein. Du kannst auch nur die ersten paar Elemente angeben, die abgespielt werden sollen. Wenn der Nutzer durch das Karussell navigiert, kannst du Mediendateien zum Pool des Preload-Managers hinzufügen und daraus entfernen.
  • Auf Anfragen des Preload-Managers antworten und dem Manager mitteilen, wie viele Inhalte für jedes Element vorab geladen werden sollen.
  • Rufe Medien aus dem Preload Manager ab, wenn der Nutzer die Wiedergabe eines Elements startet. Der Preload Manager stellt Ihrer App einen MediaSource für diesen Inhalt zur Verfügung.

  • Dem Preload-Manager den Index des aktuell wiedergegebenen Elements mitteilen Diese Informationen werden vom Preload-Manager verwendet, um zu ermitteln, wie nah die einzelnen Mediendateien am wiedergegebenen Element sind, und die Vorabladung entsprechend dynamisch zu priorisieren. Wenn der Nutzer zu einem neuen Element wechselt, aktualisiere diesen Index mit dem Preload-Manager.

  • Gib den Preload-Manager frei, wenn du ihn nicht mehr benötigst, um seine Ressourcen freizugeben.

Der Preload-Manager führt folgende Schritte aus:

  • Sie enthält alle Mediendateien, die Ihre App hinzugefügt hat.
  • Jedes Mal, wenn die Prioritäten aktualisiert werden, wird Ihre App abgefragt. Dazu wird ein von Ihrer App implementierter TargetPreloadStatusControl aufgerufen. So wird ermittelt, wie viel von jeder Mediendatei geladen werden soll.
  • Nachdem die App abgefragt wurde, wird die entsprechende Menge der einzelnen Mediendateien vorab geladen. Der Preload-Manager entscheidet, in welcher Reihenfolge das Element geladen wird. Dabei werden Elemente priorisiert, die dem Element, das der Nutzer gerade abspielt, am ähnlichsten sind.
  • Wenn die App Inhalte anfordert, stellt der Preload-Manager einen MediaSource mit den bereits geladenen Inhalten bereit.

Workflow für 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 die App ein Karussell mit Kurzvideos anzeigt. Das ausgewählte Video wird automatisch abgespielt. Der Nutzer kann das Karussell jedoch in beide Richtungen scrollen. Dadurch wird das abgespielte Video gestoppt und das Video, zu dem er scrollt, gestartet.

Alle diese Schritte werden auf den folgenden Seiten ausführlich beschrieben.

  1. Die App erstellt ein Steuerelement für den Vorabladestatus des Ziels. Der Preload-Manager fragt dieses Steuerelement ab, um zu ermitteln, wie viel von jeder Mediendatei geladen werden soll.
  2. Die App erstellt ein DefaultPreloadManager.Builder und übergibt das Ziel-Steuerelement für den Vorabladestatus. Die App verwendet dann den Builder, um den PreloadManager zu erstellen.
  3. Die App fügt dem Preload-Manager Mediendateien hinzu. Die App stellt für jedes Element einen Index bereit, der die Position des Elements im Karussell angibt.
  4. Für jede Mediendatei ruft der Preload-Manager die Ziel-Preload-Steuerung auf, um abzufragen, wie viel der Datei geladen werden soll. Die Ziel-Vorlade-Steuerung kann angeben, dass eine bestimmte Dauer von Inhalten geladen werden soll, nur die Metadaten des Elements abgerufen werden sollen oder zu diesem Zeitpunkt nichts von diesem Element abgerufen werden soll. Nachdem der PreloadManager diese Informationen erhalten hat, beginnt er mit dem Laden der Medieninhalte.
  5. Wenn der Nutzer mit der Wiedergabe von Inhalten beginnt, ruft die App den Preload Manager auf, um eine MediaSource für diese Mediendatei anzufordern. Die App ruft auch setCurrentPlayingIndex() auf, um dem Preload-Manager mitzuteilen, welche Mediendatei gerade wiedergegeben wird, damit die Prioritäten der Mediendateien aktualisiert werden.
  6. Immer wenn die Prioritäten des Preload-Managers aktualisiert werden, ruft er die Ziel-Preload-Steuerung noch einmal auf, um herauszufinden, wie viel von jedem Element geladen werden soll.
  7. Wenn die App das Karussell schließt, wird der Preload-Manager freigegeben, um seine Ressourcen freizugeben.