プリロード マネージャーを使用すると、ユーザーがアイテムを切り替える際の待ち時間を短縮し、コンテンツをより迅速に提供することで、ユーザー エクスペリエンスを向上させることができます。また、アイテムごとにプリロードの期間とランキングをカスタマイズすることもできます。
ソーシャル メディアの一般的な状況として、アプリがメディア選択のリストまたはカルーセルをユーザーに表示することがあります。たとえば、短い動画のカルーセルを表示するアプリなどです。1 つの動画が終了すると、アプリは次の動画に切り替わります。視聴中の動画が気に入らなければ、次の動画や前の動画にスワイプして移動するかもしれません。
動画コンテンツをプリロードしないと、ユーザー エクスペリエンスの低下につながる可能性があります。ユーザーがメディアの再生を終えてから、次のメディアが読み込まれるまで待たなければならない。
一方、コンテンツを過度にプリロードすると、ユーザーが実際に再生しない可能性のあるコンテンツを読み込むことで、電力とネットワーク帯域幅を浪費します。
DefaultPreloadManager は、アプリがこれらの懸念のバランスを取るのに役立ちます。プリロード マネージャーはアプリと連携して各メディア アイテムの重要度を判断し、適切な量を事前に読み込みます。
分業
DefaultPreloadManager を使用する場合、一部の作業はコードによって行われ、一部はプリロード マネージャーによって行われます。
アプリは次の処理を行う必要があります。
- プリロード マネージャーの作成に使用したのと同じ
DefaultPreloadManager.Builderオブジェクトを使用して、アプリのExoPlayerオブジェクトを作成します。DefaultPreloadManager.Builder.buildExoPlayer()を呼び出してExoPlayerを作成します。 - プリロード マネージャーに、トラッキングする各メディア アイテムを伝えます。これは、カルーセル内のすべてのコンテンツではない可能性があります。代わりに、再生する最初の数個のアイテムについてのみ伝えることができます。ユーザーがカルーセルを操作するにつれて、プリロード マネージャーのプールからメディア アイテムを追加したり削除したりできます。
- プリロード マネージャーからのクエリに応答し、各アイテムに対してプリロードするコンテンツの量をマネージャーに伝えます。
ユーザーがアイテムの再生を開始したときに、プリロード マネージャーからメディアを取得します。プリロード マネージャーは、そのコンテンツの
MediaSourceをアプリに提供します。プリロード マネージャーに現在再生中のアイテムのインデックスを伝えます。この情報は、プリロード マネージャーが各メディア アイテムが再生中のアイテムにどれだけ近いかを判断し、それに応じてプリロードの優先順位を動的に決定するために使用されます。ユーザーが新しいアイテムに移動したら、プリロード マネージャーでそのインデックスを更新します。
プリロード マネージャーの使用が終了したら、プリロード マネージャーを解放して、リソースを解放します。
プリロード マネージャーは次の処理を行います。
- アプリが追加したすべてのメディア アイテムを追跡します。
- 優先度が更新されるたびに、アプリが実装した
TargetPreloadStatusControlを呼び出してアプリにクエリを実行します。この呼び出しは、各メディア アイテムの読み込み量を調べるために行われます。 - アプリにクエリを行った後、各メディア アイテムの適切な量をプリロードします。プリロード マネージャーは、アイテムを読み込む順序を決定します。ユーザーが再生しているアイテムに近いアイテムを優先します。
- アプリがコンテンツをリクエストすると、プリロード マネージャーはすでに読み込まれているコンテンツとともに
MediaSourceを提供します。
プリロード マネージャーのワークフロー
このセクションでは、プリロード マネージャーを使用するアプリの一般的なワークフローについて説明します。この例では、アプリに短い動画のカルーセルが表示されることを想定しています。選択した動画は自動的に再生されますが、ユーザーはカルーセルをどちらの方向にもスクロールできます。スクロールすると、再生中の動画が停止し、スクロール先の動画が再生されます。
これらの手順については、以降のページで詳しく説明します。
- アプリが ターゲットのプリロード ステータス制御を作成します。プリロード マネージャーは、このコントロールにクエリを実行して、各メディア アイテムの読み込み量を調べます。
- アプリが
DefaultPreloadManager.Builderを作成し、ターゲットのプリロード ステータス制御を渡します。アプリは、ビルダーを使用してプリロード マネージャーを作成します。 - アプリはプリロード マネージャーにメディア アイテムを追加します。アプリは各アイテムのインデックスを提供し、カルーセル内のアイテムの位置を指定します。
- プリロード マネージャーは、各メディア アイテムについて、ターゲット プリロード コントロールを呼び出して、アイテムの読み込み量をクエリします。ターゲット プリロード コントロールは、特定の期間のコンテンツを読み込む、アイテムのメタデータのみを取得する、または現時点ではそのアイテムを取得しない、といった指示を出すことがあります。プリロード マネージャーがこの情報を取得すると、メディア コンテンツの読み込みが開始されます。
- ユーザーがコンテンツの再生を開始すると、アプリはプリロード マネージャーを呼び出し、そのメディア アイテムの
MediaSourceをリクエストします。また、アプリはsetCurrentPlayingIndex()を呼び出して、再生中のメディア アイテムをプリロード マネージャーに通知し、メディア アイテムの優先度を更新します。 - プリロード マネージャーの優先度が更新されるたびに、ターゲット プリロード コントロールを再度呼び出して、各アイテムの読み込み量を調べます。
- アプリがカルーセルを閉じると、プリロード マネージャーを解放してリソースを解放します。