Pengelola pramuat membantu Anda memberikan pengalaman yang lebih baik kepada pengguna dengan menyajikan konten kepada mereka lebih cepat, dengan lebih sedikit waktu tunggu saat mereka beralih dari satu item ke item lainnya. Selain itu, Anda dapat menyesuaikan durasi dan peringkat pramuat per item.
Situasi umum di media sosial adalah, aplikasi menampilkan daftar atau carousel pilihan media kepada pengguna. Misalnya, aplikasi dapat menampilkan carousel video pendek. Saat satu video selesai, aplikasi akan beralih ke video berikutnya. Selain itu, jika pengguna tidak menyukai video yang sedang ditonton, mereka dapat menggeser ke video berikutnya atau sebelumnya.
Jika Anda tidak memuat konten video terlebih dahulu, hal ini dapat menyebabkan pengalaman pengguna yang menjengkelkan. Pengguna selesai menggunakan beberapa media, lalu harus menunggu media berikutnya dimuat.
Di sisi lain, jika Anda memuat konten terlebih dahulu dengan terlalu agresif, hal itu akan membuang daya dan bandwidth jaringan dengan memuat konten yang mungkin tidak pernah diputar oleh pengguna.
DefaultPreloadManager membantu aplikasi Anda menyeimbangkan masalah ini. Pengelola
pemuatan awal bekerja dengan aplikasi Anda untuk memutuskan seberapa penting setiap item media, dan
memuat jumlah yang sesuai sebelumnya.
Pembagian kerja
Jika Anda menggunakan DefaultPreloadManager, sebagian pekerjaan dilakukan oleh kode Anda, dan sebagian lagi oleh
pengelola pra-muat.
Aplikasi Anda harus melakukan hal berikut:
- Buat objek
ExoPlayeraplikasi menggunakan objekDefaultPreloadManager.Builderyang sama dengan yang Anda gunakan untuk membuat pengelola pramuat. PanggilDefaultPreloadManager.Builder.buildExoPlayer()untuk membuatExoPlayer. - Memberi tahu pengelola pra-muat tentang setiap item media yang harus dilacaknya. Ini mungkin bukan semua konten dalam carousel; sebagai gantinya, Anda hanya dapat memberi tahu beberapa item pertama yang akan diputar. Saat pengguna menjelajahi carousel, Anda dapat menambahkan dan menghapus item media dari kumpulan pengelola pra-muat.
- Menanggapi kueri dari pengelola pra-muat, memberi tahu pengelola berapa banyak konten yang akan dimuat sebelumnya untuk setiap item.
Ambil media dari pengelola pra-muat saat pengguna mulai memutar item. Pengelola pramuat memberikan
MediaSourceuntuk konten tersebut kepada aplikasi Anda.Memberi tahu pengelola pra-muat indeks item yang sedang diputar. Informasi ini digunakan oleh pengelola pramuat untuk menentukan seberapa dekat setiap item media dengan item yang sedang diputar, dan memprioritaskan pramuat secara dinamis. Saat pengguna membuka item baru, perbarui indeks tersebut dengan pengelola pramuat.
Lepaskan pengelola pra-muat setelah Anda selesai menggunakannya, sehingga melepaskan resourcenya.
Pengelola pra-muat melakukan hal berikut:
- Objek ini melacak semua item media yang telah ditambahkan aplikasi Anda ke dalamnya.
- Setiap kali prioritasnya diperbarui, ia akan mengkueri aplikasi Anda dengan memanggil
TargetPreloadStatusControlyang diterapkan oleh aplikasi Anda. Ia memanggil ini untuk mengetahui berapa banyak setiap item media yang akan dimuat. - Setelah mengkueri aplikasi, aplikasi akan memuat sebelumnya jumlah yang sesuai untuk setiap item media. Pengelola pra-muat memutuskan urutan pemuatan item. Item ini memprioritaskan item yang paling dekat dengan item yang dimainkan pengguna.
- Saat aplikasi meminta konten, pengelola pra-muat akan menyediakan
MediaSourcedengan konten apa pun yang telah dimuat.
Alur kerja pengelola pra-muat
Bagian ini menjelaskan alur kerja umum untuk aplikasi yang menggunakan pengelola pra-muat. Dalam contoh ini, kami mengasumsikan aplikasi menampilkan carousel video pendek. Video yang dipilih diputar secara otomatis, tetapi pengguna dapat men-scroll carousel ke arah mana pun, yang akan menghentikan video yang sedang diputar dan memulai video yang di-scroll.
Semua langkah ini dibahas secara mendetail di halaman berikut.
- Aplikasi membuat kontrol status pra-pemuatan target. Pengelola pemuatan awal mengkueri kontrol ini untuk mengetahui jumlah item media yang harus dimuat.
- Aplikasi membuat
DefaultPreloadManager.Builder, dan meneruskan kontrol status pra-pemuatan target. Kemudian, aplikasi menggunakan builder untuk membuat pengelola pemuatan awal. - Aplikasi menambahkan item media ke pengelola pramuat. Aplikasi menyediakan indeks untuk setiap item, yang menentukan posisi item dalam carousel.
- Untuk setiap item media, pengelola pra-muat memanggil kontrol pra-muat target untuk mengueri seberapa banyak item yang harus dimuat. Kontrol pemuatan awal target dapat menyatakan untuk memuat konten dengan durasi tertentu, hanya mengambil metadata item, atau tidak mengambil item tersebut saat ini. Setelah pengelola pra-pemuatan mendapatkan informasi ini, pengelola akan mulai memuat konten media.
- Saat pengguna mulai memutar konten, aplikasi memanggil pengelola pramuat
untuk meminta
MediaSourceuntuk item media tersebut. Aplikasi juga memanggilsetCurrentPlayingIndex()untuk memberi tahu pengelola pramuat item media mana yang sedang diputar, sehingga prioritas item media akan diperbarui. - Setiap kali prioritas pengelola pra-muat diperbarui, pengelola akan memanggil kontrol pra-muat target sekali lagi untuk mengetahui jumlah setiap item yang akan dimuat.
- Saat menutup carousel, aplikasi akan melepaskan pengelola pra-muat untuk mengosongkan resource-nya.