مدیر پیش بارگذاری به شما کمک میکند با ارائه سریعتر محتوا به کاربران، تجربه بهتری را ارائه دهید، با انتظار کمتری هنگام جابجایی از یک مورد به مورد دیگر. همچنین به شما امکان میدهد مدت زمان و رتبهبندی پیشبارگیری در هر مورد را سفارشی کنید.
یک موقعیت رایج در رسانه های اجتماعی این است که یک برنامه لیست یا چرخ فلکی از انتخاب های رسانه را به کاربر نشان می دهد. برای مثال، یک برنامه ممکن است چرخ فلکی از ویدیوهای کوتاه را نشان دهد. وقتی یک ویدیو تمام می شود، برنامه به ویدیوی بعدی تغییر می کند. و اگر کاربر ویدیویی را که تماشا میکند دوست نداشته باشد، ممکن است به ویدیوی بعدی یا قبلی برود.
اگر محتوای ویدیویی را از قبل بارگذاری نکنید، این میتواند منجر به تجربه کاربر خستهکننده شود. کاربر با مقداری رسانه تمام می کند و سپس باید منتظر بارگذاری رسانه بعدی باشد.
از طرف دیگر، اگر محتوا را با شدت زیاد از قبل بارگذاری کنید، قدرت و پهنای باند شبکه بارگیری محتوایی را که کاربر ممکن است هرگز پخش نکند هدر می دهد.
DefaultPreloadManager
به برنامه شما کمک می کند تا این نگرانی ها را متعادل کند. مدیر پیش بارگیری با برنامه شما کار می کند تا تصمیم بگیرد که هر مورد رسانه چقدر مهم است و مقدار مناسب را از قبل بارگیری می کند.
تقسیم کار
اگر از DefaultPreloadManager
استفاده می کنید، برخی از کارها توسط کد شما و برخی توسط مدیر پیش بارگذاری انجام می شود.
برنامه شما باید کارهای زیر را انجام دهد:
- با استفاده از همان آبجکت
DefaultPreloadManager.Builder
که برای ایجاد مدیر پیش بارگیری استفاده می کنید، اشیاءExoPlayer
برنامه را ایجاد کنید. برای ایجادExoPlayer
DefaultPreloadManager.Builder.buildExoPlayer()
فراخوانی کنید. - درباره هر مورد رسانه ای که باید ردیابی شود به مدیر پیش بارگذاری بگویید . این ممکن است تمام محتوای چرخ فلک نباشد. در عوض، شما فقط می توانید آن را در مورد چند آیتم اول که بازی می شود بگویید. همانطور که کاربر در چرخ و فلک پیمایش می کند، می توانید آیتم های رسانه ای را از مخزن مدیر پیش بارگیری اضافه و حذف کنید .
- وقتی محتوای چرخ فلک تغییر میکند یا کاربر موردی را که در حال پخش است تغییر میدهد، اولویتها را در مدیر پیشبارگیری باطل کنید . این به مدیر پیش بارگذاری میگوید که اولویت هر آیتم رسانه را مجدداً تعیین کند و در صورت لزوم محتوا را بارگیری کند. پس از اینکه برای اولین بار موارد رسانه را اضافه کردید، و همچنین هنگامی که کاربر از یک مورد به مورد دیگر می رود، یا زمانی که موارد را به چرخ فلک اضافه یا حذف می کنید، مدیر پیش بارگذاری را باطل می کنید.
- به درخواستهای مدیر پیشبارگیری پاسخ دهید و به مدیر بگویید چه مقدار محتوا برای هر مورد از قبل بارگذاری شود.
هنگامی که کاربر شروع به پخش یک آیتم می کند ، رسانه را از مدیر پیش بارگیری واکشی کنید . مدیر پیش بارگذاری به برنامه شما یک
MediaSource
برای آن محتوا می دهد.پس از اتمام کار، مدیر پیش بارگذاری را آزاد کنید و منابع آن را آزاد کنید.
مدیر پیش بارگذاری موارد زیر را انجام می دهد:
- همه موارد رسانه ای را که برنامه شما به آن اضافه کرده است را پیگیری می کند.
- هر بار که اولویتهای آن باطل میشوند، برنامه شما را با فراخوانی
TargetPreloadStatusControl
که توسط برنامه شما پیادهسازی شده است، درخواست میکند. این امر را فراخوانی می کند تا بفهمد چه مقدار از هر آیتم رسانه ای باید بارگذاری شود. - پس از پرس و جو از برنامه، مقدار مناسبی از هر آیتم رسانه را از قبل بارگیری می کند. مدیر پیش بارگذاری تصمیم می گیرد که آیتم با چه ترتیبی بارگذاری شود. مواردی را که به آیتمی که کاربر بازی می کند نزدیک تر است اولویت بندی می کند.
- هنگامی که برنامه محتوا را درخواست می کند، مدیر پیش بارگذاری یک
MediaSource
با هر محتوایی که قبلاً بارگذاری شده است ارائه می دهد.
گردش کار مدیر پیش بارگذاری
این بخش یک گردش کار معمولی را برای برنامه ای که از مدیر پیش بارگذاری استفاده می کند، توضیح می دهد. در این مثال، فرض میکنیم که برنامه چرخ فلکی از ویدیوهای کوتاه را نمایش میدهد. ویدیوی انتخاب شده به طور خودکار پخش می شود، اما کاربر می تواند چرخ فلک را در هر جهت حرکت دهد، که ویدیوی در حال پخش را متوقف می کند و ویدیویی را که به آن پیمایش می کند شروع می شود.
تمامی این مراحل در صفحات بعدی به تفصیل مورد بحث قرار گرفته است.
- برنامه یک کنترل وضعیت پیش بارگذاری هدف ایجاد می کند. مدیر پیش بارگذاری این کنترل را جستجو می کند تا بفهمد چه مقدار از هر آیتم رسانه باید بارگیری شود.
- برنامه یک
DefaultPreloadManager.Builder
ایجاد میکند و کنترل وضعیت پیشبارگذاری هدف را پاس میکند. سپس برنامه از سازنده برای ایجاد مدیر پیش بارگذاری استفاده می کند . - برنامه موارد رسانه ای را به مدیر پیش بارگذاری اضافه می کند . این برنامه برای هر آیتم فهرستی ارائه میکند که موقعیت آن مورد را در چرخ فلک مشخص میکند.
- پس از اضافه شدن همه رسانه ها، برنامه
invalidate()
فراخوانی می کند تا به مدیر پیش بارگذاری بگوید اولویت ها را برای هر آیتم تنظیم کند و سپس آنها را از قبل بارگذاری کند. - برای هر آیتم رسانه ای، مدیر پیش بارگذاری کنترل پیش بارگذاری هدف را فراخوانی می کند تا بپرسد چه مقدار از آیتم باید بارگذاری شود. کنترل پیش بارگذاری هدف ممکن است بگوید برای بارگیری مدت زمان مشخصی از محتوا، فقط ابرداده مورد را واکشی کنید، یا در این زمان هیچ یک از آن مورد را واکشی نکنید. پس از اینکه مدیر پیش بارگذاری این اطلاعات را به دست آورد، شروع به بارگیری محتوای رسانه می کند.
- هنگامی که کاربر شروع به پخش محتوا می کند، برنامه با مدیر پیش بارگذاری تماس می گیرد تا یک
MediaSource
برای آن آیتم رسانه درخواست کند. این برنامه همچنینsetCurrentPlayingIndex()
را فراخوانی میکند تا به مدیر پیشبارگذاری بگوید کدام آیتم رسانه در حال پخش است. - اگر کاربر به یک مورد رسانه دیگر منتقل شود، برنامه آن مورد را از مدیر پیش بارگیری درخواست میکند و همچنین فهرست پخش فعلی را بهروزرسانی میکند. سپس مجدداً
invalidate()
را فراخوانی می کند تا به مدیر پیش بارگذاری بگوید اولویت های خود را بر اساس آنچه اکنون در حال پخش است به روز کند. - اگر برنامه آیتم های رسانه ای را به چرخ فلک اضافه یا حذف کند، آن موارد را نیز به مدیر پیش بارگذاری اضافه یا حذف می کند، و پس از انجام این کار،
invalidate()
را فراخوانی می کند. - هر زمان که اولویت های مدیر پیش بارگذاری نامعتبر شود، یک بار دیگر کنترل پیش بارگذاری هدف را فرا می خواند تا بفهمد چه مقدار از هر آیتم باید بارگذاری شود.
- وقتی برنامه چرخ فلک را می بندد، مدیر پیش بارگذاری را آزاد می کند تا منابع خود را آزاد کند.