Memory Advice API הוא ממשק API מקורי ניסיוני שעוזר לאפליקציות ל-Android להישאר במסגרת מגבלות הבטיחות לשימוש בזיכרון. ה-API משיג זאת על ידי הערכה של כמות משאבי הזיכרון שבשימוש, ולאחר מכן שליחת התראה לאפליקציה כשחורגים מסף מסוים. ה-API יכול גם לדווח על האחוז המשוער של שימוש בזיכרון ישירות לאפליקציה.
האומדנים שסופקו על ידי ה-API עוזרים לקבוע מתי צריך לשנות את השימוש בזיכרון באפליקציה, או למצוא תחומים לשיפור בגרסאות עתידיות של האפליקציה. השינויים יכולים לכלול כל דבר שמשפיע על צריכת הזיכרון, כמו הפחתת הפרטים והאיכות של נכסים חזותיים וקולות.
משאבי הזיכרון המשוערים כוללים זיכרון אשכול מקומי שהוקצה על ידי malloc, וזיכרון גרפיקה שהוקצה על ידי ממשקי ה-API של OpenGL ES ו-Vulkan Graphics. לכן, Memory Advice API הוא אידיאלי למשחקים ולאפליקציות עם שימוש נרחב בגרפיקה.
האומדנים מבוססים על הנתונים הבאים:
- מדדי המכשיר שנאספים על ידי ה-API
- נתוני למידת מכונה ממכשירים
- בדיקת המכשיר
ברמת ה-API, ממשק Memory Advice API מגדיר קבוצה של מצבי ייעוץ לגבי זיכרון ומעביר אותם לאפליקציות באמצעות קבוצת פונקציות.
תחילת העבודה תחילת העבודה במשחקים של Unity
הפצות
Memory Advice API הוא חלק מ-Android Games Development Kit (AGDK) ומופץ דרך הערוצים הבאים:
- גרסאות בינאריות בספריות Android Games Jetpack.
- גרסאות בינאריות בדף ההורדה של AGDK.
- קוד המקור ב-AOSP.
במשחקים צריך להשתמש במהדורת Memory Advice API המומלצת לסביבת ה-build שלהם. ב-Android Studio מומלץ להשתמש במהדורת Jetpack. לגבי Android Game Development Extension (AGDE), מומלץ להשתמש בגרסה שזמינה בדף ההורדה של AGDK.
תכונות
בקטע הזה מתוארות התכונות של Memory Advice API.
מצב הזיכרון
ה-API מדווח לאפליקציות על מצבי הזיכרון הבאים:
- MEMORYADVICE_STATE_OK
- MEMORYADVICE_STATE_APPROACHING_LIMIT
- MEMORYADVICE_STATE_CRITICAL
פרטים נוספים זמינים בדפי העזרה של memoryadvice_memorystate.
דיווח על מצב הזיכרון
ה-API תומך בדיווח על מצב הזיכרון באמצעות מנגנון סקירה או קריאה חוזרת (callback):
בדיקות:
אפליקציה יכולה לקרוא ל-API בכל שלב כדי לאחזר את מצב הזיכרון.פונקציית קריאה חוזרת:
אפליקציה יכולה לרשום פונקציית קריאה חוזרת ב-Memory Advice API. האפליקציה מציינת את תדירות השיחה החוזרת. ה-API משתמש בתדירות כדי לקבוע מתי להריץ את קריאת החזרה (callback) כשמצב הזיכרון של האפליקציה מתקרב למגבלה הבטוחה או נמוך באופן קריטי. פונקציית ה-callback לא מופעלת אם תנאי הזיכרון בטוח. קריאת החזרה (callback) מתבצעת בשרשור משלה, ולא בשרשור ששייך לאפליקציה.
שיקולים לגבי עלות ותדירות השיחות
ה-Memory Advice API משתמש בזמן מחשוב כדי ליצור את סטטוס הזיכרון. העלות משתנה בהתאם למכשיר, אבל בדרך כלל היא בין 1ms ל-3ms לכל קריאה. כדאי להביא בחשבון את העלויות הנוספות האלה כשמגדירים את התדירות שבה בודקים את מצב הזיכרון, או את התדירות שצריך לציין בקריאה החוזרת (callback) של מצב הזיכרון.
דרישות
דרישות המכשיר
- Android 4.4 (API ברמה 19) ואילך.
דרישות האפליקציה
ה-API תומך רק באפליקציות מקוריות (אפליקציות שנכתבו בעיקר ב-C/C++).
ה-API תומך רק במכשירים פיזיים, אין תמיכה באמולטורים.
דרישות לגבי גרסת NDK
במהדורה של Memory Advice API יש תמיכה ברוב הגרסאות הפופולריות של NDK. בהערות המוצר מפורטת רשימת הגרסאות הנתמכות של NDK.
מקורות מידע נוספים
- נתוני גרסה של Memory Advice API
- מאמרי העזרה של Memory Advice API
- דוגמה לטיפים בנושא זיכרון ב-GitHub
- קוד המקור של Memory Advice API
בעיות ומשוב
Memory Advice API נמצא בגרסת בטא, ואנחנו מקבלים בברכה משוב. אם יש לכם הצעות או אם נתקלתם בבעיות בזמן השימוש ב-API, אתם יכולים ליצור דיווח ב-IssueTracker.