تساعدك ميزة "إدارة التحميل المُسبَق" في تقديم تجربة أفضل للمستخدمين من خلال عرض المحتوى لهم بشكل أسرع، مع تقليل وقت الانتظار عند الانتقال من عنصر إلى آخر. ويتيح لك أيضًا تخصيص مدة التحميل المُسبق وترتيبه لكل عنصر.
من الحالات الشائعة في وسائل التواصل الاجتماعي أن يعرض التطبيق قائمة أو لوحة عرض دوّارة لخيارات الوسائط للمستخدم. على سبيل المثال، قد يعرض أحد التطبيقات لوحة عرض دوّارة لفيديوهات قصيرة. وعند انتهاء فيديو، ينتقل التطبيق إلى الفيديو التالي. وإذا لم يعجب المستخدم الفيديو الذي يشاهده، قد يمرّر سريعًا إلى الفيديو التالي أو السابق.
إذا لم يتم تحميل محتوى الفيديو مسبقًا، قد يؤدي ذلك إلى تجربة مستخدم محبطة. ينتهي المستخدم من بعض الوسائط ثم يتعين عليه انتظار تحميل الوسائط التالية.
من ناحية أخرى، إذا تم تحميل المحتوى مسبقًا بشكل مفرط، سيؤدي ذلك إلى إهدار الطاقة والنطاق الترددي للشبكة في تحميل محتوى قد لا يشغّله المستخدم فعليًا.
تساعدك DefaultPreloadManager في تحقيق التوازن بين هذه المخاوف. تعمل أداة إدارة التحميل المُسبق مع تطبيقك لتحديد مدى أهمية كل ملف وسائط، وتحميل المقدار المناسب مسبقًا.
تقسيم العمل
إذا كنت تستخدم DefaultPreloadManager، يتم تنفيذ بعض المهام من خلال الرمز البرمجي، وبعضها من خلال
مدير التحميل المُسبَق.
يجب أن ينفّذ تطبيقك ما يلي:
- أنشئ عناصر
ExoPlayerالخاصة بالتطبيق باستخدام عنصرDefaultPreloadManager.Builderنفسه الذي تستخدمه لإنشاء مدير التحميل المُسبَق. اتصل بالرقمDefaultPreloadManager.Builder.buildExoPlayer()لإنشاءExoPlayer. - إخبار مدير التحميل المُسبَق بكل ملف وسائط يجب تتبُّعه قد لا يكون هذا كل المحتوى في لوحة العرض الدوّارة، ولكن يمكنك فقط إخباره بأول بضعة عناصر سيتم تشغيلها. أثناء تنقّل المستخدم في لوحة العرض الدوّارة، يمكنك إضافة ملفات الوسائط وإزالتها من مجموعة مدير التحميل المُسبَق.
- الردّ على طلبات البحث من مدير التحميل المُسبَق، وإخبار المدير بمقدار المحتوى الذي يجب تحميله مُسبَقًا لكل عنصر.
جلب الوسائط من مدير التحميل المُسبَق عندما يبدأ المستخدم في تشغيل ملف وسائط يمنح مدير التحميل المُسبَق تطبيقك
MediaSourceلهذا المحتوى.إعلام مدير التحميل المُسبَق بفهرس العنصر الذي يتم تشغيله حاليًا يستخدم مدير التحميل المُسبَق هذه المعلومات لتحديد مدى قرب كل ملف وسائط من الملف الذي يتم تشغيله، وتحديد أولوية التحميل المُسبَق بشكل ديناميكي وفقًا لذلك. عندما ينتقل المستخدم إلى عنصر جديد، عليك تعديل هذا الفهرس باستخدام مدير التحميل المُسبَق.
حرِّر مدير التحميل المُسبَق عند الانتهاء من استخدامه، ما يؤدي إلى تحرير موارده.
ينفّذ مدير التحميل المُسبَق ما يلي:
- ويتتبّع جميع ملفات الوسائط التي أضافها تطبيقك إليه.
- في كل مرة يتم فيها تعديل أولوياته، يرسل طلبًا إلى تطبيقك من خلال استدعاء
TargetPreloadStatusControlالذي ينفّذه تطبيقك. ويستدعي هذا لمعرفة مقدار كل ملف وسائط يتم تحميله. - بعد إرسال طلب إلى التطبيق، يتم تحميل المقدار المناسب من كل ملف وسائط مسبقًا. يحدّد مدير التحميل المُسبق ترتيب تحميل العنصر. وتعطي الأولوية للأغاني الأقرب إلى الأغنية التي يشغّلها المستخدم.
- عندما يطلب التطبيق محتوى، يوفّر مدير التحميل المُسبَق
MediaSourceمع أي محتوى تم تحميله مسبقًا.
سير عمل مدير التحميل المُسبَق
يصف هذا القسم سير العمل المعتاد لتطبيق يستخدم مدير التحميل المُسبَق. في هذا المثال، نفترض أنّ التطبيق يعرض لوحة عرض دوّارة لفيديوهات قصيرة. يتم تشغيل الفيديو المحدد تلقائيًا، ولكن يمكن للمستخدم تمرير لوحة العرض الدوّارة في أي اتجاه، مما يؤدي إلى إيقاف الفيديو الذي كان قيد التشغيل وبدء الفيديو الذي يتم التمرير إليه.
يتم تناول كل هذه الخطوات بالتفصيل في الصفحات التالية.
- ينشئ التطبيق عنصر تحكّم في حالة التحميل المُسبق المستهدَف. يستعلم مدير التحميل المُسبق عن عنصر التحكّم هذا لمعرفة مقدار كل ملف وسائط يجب تحميله.
- ينشئ التطبيق
DefaultPreloadManager.Builder، ويجتاز عنصر التحكّم في حالة التحميل المُسبَق المستهدَف. بعد ذلك، يستخدم التطبيق أداة الإنشاء لإنشاء مدير التحميل المُسبَق. - يضيف التطبيق ملفات الوسائط إلى مدير التحميل المُسبَق. يوفّر التطبيق فهرسًا لكل عنصر، يحدّد موضع العنصر في لوحة العرض الدوّارة.
- بالنسبة إلى كل ملف وسائط، يستدعي مدير التحميل المُسبق عنصر التحكّم في التحميل المُسبق المستهدَف للاستعلام عن مقدار الملف الذي يجب تحميله. قد يطلب عنصر التحكّم في التحميل المُسبق المستهدَف تحميل مدة معيّنة من المحتوى، أو جلب البيانات الوصفية للعنصر فقط، أو عدم جلب أي جزء من هذا العنصر في الوقت الحالي. بعد أن يحصل مدير التحميل المُسبق على هذه المعلومات، يبدأ في تحميل محتوى الوسائط.
- عندما يبدأ المستخدم في تشغيل المحتوى، يستدعي التطبيق مدير التحميل المُسبَق
لطلب
MediaSourceلملف الوسائط هذا. يستدعي التطبيق أيضًاsetCurrentPlayingIndex()لإعلام مدير التحميل المُسبَق بملف الوسائط الذي يتم تشغيله، ليتم تعديل أولويات ملفات الوسائط. - عند تعديل أولويات مدير التحميل المُسبق، يتم استدعاء عنصر التحكّم في التحميل المُسبق المستهدَف مرة أخرى لمعرفة مقدار كل عنصر يجب تحميله.
- عندما يغلق التطبيق لوحة العرض الدوّارة، يحرّر مدير التحميل المُسبَق لإخلاء موارده.