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