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