پیش‌بارگیری مفاهیم مدیر

مدیر پیش‌بارگیری به شما کمک می‌کند با ارائه سریع‌تر محتوا به کاربران، تجربه بهتری به آن‌ها ارائه دهید و زمان انتظار آن‌ها را هنگام جابه‌جایی از یک مورد به مورد دیگر کاهش دهید. همچنین به شما امکان می‌دهد مدت و رتبه‌بندی پیش‌بارگیری را برای هر مورد سفارشی‌سازی کنید.

یک وضعیت رایج در رسانه‌های اجتماعی این است که برنامه فهرستی یا گردونه‌ای از گزینه‌های رسانه را به کاربر نشان می‌دهد. برای مثال، برنامه‌ای ممکن است گردونه‌ای از ویدیوهای کوتاه را نشان دهد. وقتی یک ویدیو تمام می‌شود، برنامه به ویدیو بعدی می‌رود. و اگر کاربر ویدیویی را که تماشا می‌کند دوست نداشته باشد، ممکن است با تند کشیدن به ویدیو بعدی یا قبلی برود.

اگر محتوای ویدیویی را پیش‌بار نکنید، این امر می‌تواند به تجربه کاربری ناامیدکننده‌ای منجر شود. کاربر رسانه‌ای را تمام می‌کند و سپس باید منتظر بماند تا رسانه بعدی بار شود.

ازسوی دیگر، اگر محتوا را بیش‌ازحد تهاجمی پیش‌بارگیری کنید، این کار باعث هدر رفتن انرژی و پهنای باند شبکه برای بارگیری محتوایی می‌شود که ممکن است کاربر هرگز آن را پخش نکند.

DefaultPreloadManager به برنامه‌تان کمک می‌کند این نگرانی‌ها را متعادل کند. مدیر پیش‌بارگیری با برنامه شما کار می‌کند تا تصمیم بگیرد هر فایل رسانه‌ای چقدر اهمیت دارد و مقدار مناسب را ازقبل بار می‌کند.

تقسیم کار

اگر از DefaultPreloadManager استفاده می‌کنید، بخشی از کار توسط کد شما و بخشی دیگر توسط مدیر پیش‌بارگیری انجام می‌شود.

برنامه‌تان باید کارهای زیر را انجام دهد:

  • اشیاء ExoPlayer برنامه را بااستفاده از همان شیء DefaultPreloadManager.Builder که برای ایجاد مدیر پیش‌بارگیری استفاده می‌کنید بسازید. برای ایجاد ExoPlayer، با DefaultPreloadManager.Builder.buildExoPlayer() تماس بگیرید.
  • به مدیر پیش‌بارگیری درباره هر فایل رسانه‌ای که باید ردیابی کند اطلاع دهید. این ممکن است همه محتوای موجود در گردونه نباشد؛ درعوض، می‌توانید فقط درباره چند مورد اولی که باید پخش شود به آن بگویید. وقتی کاربر در گردونه پیمایش می‌کند، می‌توانید فایل‌های رسانه‌ای را به مخزن مدیر پیش‌بارگیری اضافه و از آن حذف کنید.
  • به پُرسمان‌های مدیر پیش‌بارگیری پاسخ دهید و به مدیر بگویید چه مقدار محتوا برای هر مورد پیش‌بارگیری کند.
  • وقتی کاربر پخش موردی را شروع می‌کند، رسانه را از مدیر پیش‌بارگیری واکشی کنید. مدیر پیش‌بارگیری به برنامه شما MediaSource برای آن محتوا می‌دهد.

  • شاخص موردی را که درحال پخش است به مدیر پیش‌بارگیری بگویید. مدیر پیش‌بارگیری از این اطلاعات برای تعیین میزان نزدیکی هر فایل رسانه‌ای به فایل درحال پخش استفاده می‌کند و براساس آن، اولویت پیش‌بارگیری را به‌صورت پویا تعیین می‌کند. وقتی کاربر به مورد جدیدی پیمایش می‌کند، آن نمایه را با مدیر پیش‌بارگیری به‌روز کنید.

  • وقتی کارتان با مدیر پیش‌بارگیری تمام شد، آن را رها کنید تا منابع آن آزاد شود.

مدیر پیش‌بارگذاری کارهای زیر را انجام می‌دهد:

  • این پایگاه داده همه فایل‌های رسانه‌ای را که برنامه‌تان به آن اضافه کرده است ردیابی می‌کند.
  • هربار که اولویت‌های آن به‌روز می‌شود، با فراخوانی TargetPreloadStatusControl که توسط برنامه‌تان پیاده‌سازی شده است، برنامه‌تان را پُرسمان می‌کند. این را فراخوانی می‌کند تا متوجه شود چه مقدار از هر فایل رسانه‌ای را بار کند.
  • پس‌از اینکه برنامه را جستجو کرد، مقدار مناسبی از هر فایل رسانه‌ای را پیش‌بارگیری می‌کند. مدیر پیش‌بارگیری تصمیم می‌گیرد که مورد با چه ترتیبی بار شود. این مدل مواردی را که به مورد درحال پخش کاربر نزدیک‌تر هستند در اولویت قرار می‌دهد.
  • وقتی برنامه محتوا درخواست می‌کند، مدیر پیش‌بارگیری MediaSource را با هر محتوایی که قبلاً بار شده است ارائه می‌دهد.

گردش کار مدیر پیش‌بارگیری

این بخش گردش کار معمولی را برای برنامه‌ای که از مدیر پیش‌بارگیری استفاده می‌کند شرح می‌دهد. در این مثال، فرض می‌کنیم برنامه گردونه‌ای از ویدیوهای کوتاه را نمایش می‌دهد. ویدیو انتخاب‌شده به‌طور خودکار پخش می‌شود، اما کاربر می‌تواند گردونه را به هر جهتی پیمایش کند، که این کار باعث می‌شود ویدیویی که درحال پخش بود متوقف شود و ویدیویی که به آن پیمایش کرده است شروع شود.

همه این مراحل به‌طور مفصل در صفحه‌های زیر توضیح داده شده است.

  1. برنامه کنترل وضعیت پیش‌بارگیری هدف ایجاد می‌کند. مدیر پیش‌بارگیری این کنترل را جستجو می‌کند تا متوجه شود چه مقدار از هر فایل رسانه‌ای را باید بار کند.
  2. برنامه DefaultPreloadManager.Builder ایجاد می‌کند و کنترل وضعیت پیش‌بارگیری هدف را رد می‌کند. سپس برنامه از سازنده برای ایجاد مدیر پیش‌بارگیری استفاده می‌کند.
  3. برنامه فایل‌های رسانه‌ای را به مدیر پیش‌بارگیری اضافه می‌کند. برنامه برای هر مورد یک نمایه ارائه می‌دهد که موقعیت مورد را در گردونه مشخص می‌کند.
  4. برای هر فایل رسانه‌ای، مدیر پیش‌بارگیری کنترل پیش‌بارگیری هدف را فراخوانی می‌کند تا میزان بارگیری مورد را پرس‌وجو کند. کنترل پیش‌بارگیری هدف ممکن است بگوید مدت زمان خاصی از محتوا بار شود، فقط فراداده مورد واکشی شود، یا هیچ‌کدام از آن موارد در این زمان واکشی نشود. پس‌از اینکه مدیر پیش‌بارگیری این اطلاعات را دریافت کرد، شروع به بار کردن محتوای رسانه می‌کند.
  5. وقتی کاربر شروع به پخش محتوا می‌کند، برنامه با مدیر پیش‌بارگیری تماس می‌گیرد تا MediaSource را برای آن فایل رسانه‌ای درخواست کند. برنامه همچنین setCurrentPlayingIndex() را فراخوانی می‌کند تا به مدیر پیش‌بارگیری بگوید کدام فایل رسانه‌ای درحال پخش است، تا اولویت‌های فایل‌های رسانه‌ای به‌روز شود.
  6. هرگاه اولویت‌های مدیر پیش‌بارگیری به‌روز شود، کنترل پیش‌بارگیری هدف را دوباره فراخوانی می‌کند تا مشخص کند چه مقدار از هر مورد باید بار شود.
  7. وقتی برنامه گردونه را می‌بندد، مدیر پیش‌بارگیری را آزاد می‌کند تا منابع آن را آزاد کند.