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