הכלי לניהול טעינה מראש עוזר לכם לספק למשתמשים חוויה טובה יותר על ידי הצגת תוכן מהירה יותר, עם פחות זמן המתנה כשהם עוברים מפריט אחד לאחר. בנוסף, אפשר להתאים אישית את משך הטעינה מראש ואת הדירוג שלה לכל פריט.
מצב נפוץ ברשתות חברתיות הוא שאפליקציה מציגה למשתמש רשימה או קרוסלה של אפשרויות מדיה. לדוגמה, באפליקציה יכול להיות קרוסלה של סרטונים קצרים. כשסרטון אחד מסתיים, האפליקציה עוברת לסרטון הבא. אם המשתמש לא אוהב את הסרטון שהוא צופה בו, הוא יכול להחליק כדי לעבור לסרטון הבא או הקודם.
אם לא טוענים מראש את תוכן הווידאו, חוויית המשתמש עלולה להיות מתסכלת. המשתמש מסיים לצפות במדיה מסוימת ואז צריך לחכות עד שהמדיה הבאה תיטען.
מצד שני, אם טוענים מראש את התוכן בצורה אגרסיבית מדי, נגרם בזבוז של חשמל ורוחב פס ברשת בטעינת תוכן שהמשתמשים לא יפעילו בפועל.
DefaultPreloadManager
עוזר לאפליקציה שלכם לאזן בין השיקולים האלה. מנהל הטעינה מראש פועל עם האפליקציה כדי לקבוע את מידת החשיבות של כל פריט מדיה, וטוען מראש את הכמות המתאימה.
חלוקת עבודה
אם משתמשים ב-DefaultPreloadManager
, חלק מהעבודה מתבצע על ידי הקוד וחלק על ידי מנהל הטעינה מראש.
האפליקציה צריכה לבצע את הפעולות הבאות:
- יוצרים את אובייקטי
ExoPlayer
של האפליקציה באמצעות אותו אובייקטDefaultPreloadManager.Builder
שבו השתמשתם כדי ליצור את מנהל הטעינה מראש. מתקשרים אלDefaultPreloadManager.Builder.buildExoPlayer()
כדי ליצורExoPlayer
. - צריך להודיע למנהל הטעינה מראש על כל פריט מדיה שהוא צריך לעקוב אחריו. יכול להיות שזה לא כל התוכן בקרוסלה, אלא רק כמה פריטים ראשונים שיופעלו. בזמן שהמשתמש עובר בין התמונות בקרוסלה, אפשר להוסיף פריטי מדיה למאגר של מנהל הטעינה מראש ולהסיר ממנו פריטים.
- ביטול התוקף של העדיפויות במנהל הטעינה מראש כשתוכן הקרוסלה משתנה או כשהמשתמש משנה את הפריט שהוא מפעיל. הפקודה הזו אומרת למנהל הטעינה מראש לקבוע מחדש את העדיפות של כל פריט מדיה, ולטעון תוכן אם צריך. תבטלו את התוקף של מנהל הטעינה מראש אחרי שתוסיפו פריטי מדיה בפעם הראשונה, וגם כשהמשתמש יעבור מפריט אחד לפריט אחר, או כשתוסיפו או תסירו פריטים מהקרוסלה.
- להשיב לשאילתות ממנהל הטעינה מראש, ולציין למנהל כמה תוכן לטעון מראש עבור כל פריט.
שליפת מדיה ממנהל הטעינה מראש כשמשתמש מתחיל להפעיל פריט. מנהל הטעינה מראש נותן לאפליקציה שלכם
MediaSource
לגבי התוכן הזה.כשמסיימים להשתמש בכלי לניהול טעינה מראש, משחררים אותו כדי לפנות את המשאבים שלו.
הכלי לניהול טעינה מראש מבצע את הפעולות הבאות:
- הוא עוקב אחרי כל פריטי המדיה שהאפליקציה שלכם הוסיפה אליו.
- בכל פעם שהעדיפויות שלו לא תקפות, הוא שולח שאילתה לאפליקציה שלכם על ידי קריאה ל-
TargetPreloadStatusControl
שהוטמעה באפליקציה. הוא קורא ל-TargetPreloadStatusControl
כדי לגלות כמה מכל פריט מדיה לטעון. - אחרי שהיא שולחת שאילתה לאפליקציה, היא טוענת מראש את הכמות המתאימה של כל פריט מדיה. מנהל הטעינה מראש מחליט באיזה סדר לטעון את הפריט. המערכת נותנת עדיפות לפריטים שהכי קרובים לפריט שהמשתמש מפעיל.
- כשהאפליקציה מבקשת תוכן, מנהל הטעינה מראש מספק
MediaSource
עם כל התוכן שכבר נטען.
תהליך העבודה של מנהל הטעינה מראש
בקטע הזה מתואר תהליך עבודה אופייני לאפליקציה שמשתמשת במנהל הטעינה מראש. בדוגמה הזו, אנחנו מניחים שהאפליקציה מציגה קרוסלה של סרטונים קצרים. הסרטון שנבחר מופעל באופן אוטומטי, אבל המשתמש יכול לגלול בקרוסלה לכל כיוון. הפעולה הזו מפסיקה את הסרטון שהופעל ומתחילה את הסרטון שאליו גללו.
כל השלבים האלה מוסברים בפירוט בדפים הבאים.
- האפליקציה יוצרת בקרת סטטוס של טעינה מראש של מודעות לטירגוט. מנהל הטעינה מראש שולח שאילתה לבקר הזה כדי לגלות כמה מכל פריט מדיה צריך לטעון.
- האפליקציה יוצרת
DefaultPreloadManager.Builder
ועוברת את הבדיקה של סטטוס הטעינה מראש של היעד. לאחר מכן, האפליקציה משתמשת בכלי ליצירת מנהל הטעינה מראש. - האפליקציה מוסיפה פריטי מדיה למנהל הטעינה מראש. האפליקציה מספקת אינדקס לכל פריט, שמציין את המיקום של הפריט בקרוסלה.
- אחרי שמוסיפים את כל המדיה, האפליקציה קוראת ל-
invalidate()
כדי להגדיר את העדיפויות של כל פריט ואז לטעון אותו מראש. - לכל פריט מדיה, מנהל הטעינה מראש קורא את אמצעי הבקרה של הטעינה מראש כדי לשאול כמה מהפריט צריך לטעון. יכול להיות שבפקד הטעינה מראש של היעד יהיה כתוב לטעון תוכן למשך זמן מסוים, רק לאחזר את המטא-נתונים של הפריט או לא לאחזר את הפריט הזה בשלב הזה. אחרי שמנהל הטעינה מראש מקבל את המידע הזה, הוא מתחיל לטעון את תוכן המדיה.
- כשהמשתמש מתחיל להפעיל תוכן, האפליקציה קוראת למנהל הטעינה מראש כדי לבקש
MediaSource
עבור פריט המדיה הזה. האפליקציה גם קוראת ל-setCurrentPlayingIndex()
כדי להודיע למנהל הטעינה מראש איזה פריט מדיה מושמע. - אם המשתמש עובר לפריט מדיה אחר, האפליקציה מבקשת את הפריט הזה ממנהל הטעינה מראש, וגם מעדכנת את האינדקס של הפריט שמופעל כרגע. לאחר מכן, הוא קורא שוב ל-
invalidate()
כדי להודיע למנהל הטעינה מראש לעדכן את העדיפויות שלו בהתאם למה שמופעל עכשיו. - אם האפליקציה מוסיפה או מסירה פריטי מדיה לקרוסלה, היא גם מוסיפה או מסירה את הפריטים האלה למנהל הטעינה מראש, וקוראת ל-
invalidate()
כשהיא מסיימת לעשות את זה. - בכל פעם שהתוקף של העדיפויות במנהל הטעינה מראש פג, הוא קורא שוב לפקד הטעינה מראש של היעד כדי לגלות כמה מכל פריט לטעון.
- כשהאפליקציה סוגרת את הקרוסלה, היא משחררת את מנהל הטעינה מראש כדי לפנות את המשאבים שלה.