مفاهیم مدیریت پیش بارگذاری

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

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

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

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

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

تقسیم کار

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

برنامه شما باید موارد زیر را انجام دهد:

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

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

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

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

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

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

تمام این مراحل به تفصیل در صفحات بعدی مورد بحث قرار گرفته است.

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