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