המערכת קובעת את סדר העדיפויות של בקשות של אפליקציות למשאבים על סמך מצב המכשיר, מצב האפליקציה וקטגוריית המתנה של האפליקציה.
מערכת Android יכולה לאכוף מגבלות על משאבים בשתי דרכים שונות. אחת מהדרכים לבצע אופטימיזציה של ניצול המשאבים היא לדחות את ביצוע העבודה עד שהמכשיר יוצא ממצב של צריכת אנרגיה נמוכה, כמו מצב שינה. לדוגמה, משימות רגילות וזעקות מעוררות לא מדויקות יושהו כך שיתבצעו אחרי שהמכשיר ייצא ממצב שינה.
דרך אחרת היא לצמצם את היכולת של האפליקציה להעיר את המכשיר ולבצע משימות, על סמך הקטגוריה הנוכחית של האפליקציה במצב המתנה. המערכת יכולה לצמצם גם את התדירות (תדירות ההפעלה של המכשיר על ידי האפליקציה) וגם את משך הזמן הכולל (משך הזמן שבו המכשיר נשאר במצב פעיל). לדוגמה, אם האפליקציה נמצאת בקטגוריית נדיר במצב המתנה, היא יכולה להריץ משימות מתוזמנות למשך 10 דקות בסך הכול בתקופה רציפה של 24 שעות.
חשוב לזכור ש-WorkManager משתמש ב-JobScheduler כדי לתזמן משימות כשהאפליקציה לא גלויה, ולכן העובדים מושפעים ממגבלות המשאבים של המשימות.
מידע נוסף על ההגבלות זמין במאמרים הבאים:
- הגבלות על משאבים על סמך מצב המכשיר
- מגבלות משאבים על סמך מצב האפליקציה
- מגבלות משאבים על סמך קטגוריית האפליקציות במצב המתנה
חשוב לזכור שמצב המכשיר ומצב האפליקציה יכולים לשנות את המגבלות של הקטגוריות של האפליקציות במצב המתנה. לדוגמה, אם המכשיר נמצא בטעינה, המערכת מאפשרת לאפליקציות בקטגוריית ההמתנה נדירה לבצע משימות למשך יותר מ-10 דקות בתקופה רציפה של 24 שעות.
היו שינויים בהתנהגות שגם השפיעו על מגבלות המשאבים. מידע נוסף זמין במאמר שינויים בהתנהגות של Android שמשפיעים על מגבלות המשאבים.
הגבלות על משאבים על סמך מצב המכשיר
המערכת יכולה גם לפטור או לאכוף מגבלות על משאבים על סמך מצב המכשיר. לדוגמה, למכשיר במצב charging ניתנת גישה בלתי מוגבלת למשאבים, ללא קשר לקטגוריה של האפליקציה במצב המתנה.
מצב המכשיר |
משרות |
התראות |
גישה לרשת |
העברת הודעות בענן של Firebase |
טעינה |
אין מגבלות על ביצוע, מלבד קטגוריית restricted במצב המתנה |
אין מגבלות על ביצוע לכל הקטגוריות של מצב המתנה ומצבי התהליך, אלא אם המשתמש מגביל באופן ידני את צריכת הסוללה של האפליקציה |
אין הגבלות |
אין הגבלות |
מסך מופעל |
אכיפת מגבלות ההרצה מבוססת על הקטגוריה של זמן ההמתנה |
אכיפת המגבלות על הביצועים מבוססת על תהליך האפליקציה ועל הקטגוריה של זמן ההמתנה |
הגישה תלויה במצב של הקטגוריה במצב המתנה או של תהליך האפליקציה |
אין הגבלות |
המסך כבוי ומצב שינה פעיל |
אכיפת המגבלות על ביצוע הפקודות מתבצעת על סמך הקטגוריה של המצב המתמיד, והביצוע נדחה לחלון התחזוקה של מצב הדומיין הרדום |
אכיפת המגבלות על הביצועים מתבצעת על סמך הקטגוריה של זמן ההמתנה. שעונים מעוררים רגילים: יושהו עד לחלון הזמן לתחזוקה של מצב שינה התראות במצב חוסר פעילות: מוגבלות ל-7 בשעה |
מוגבלות במצב שינה |
עדיפות גבוהה: אין מגבלות על ביצוע עדיפות רגילה: ההודעה תועבר לחלון הזמן לתחזוקה במצב שינה |
הגבלות על משאבים על סמך מצב האפליקציה
המערכת אוכפת את מגבלות המשאבים של קטגוריית האפליקציה במצב המתנה בהתאם לחשיבות של תהליך האפליקציה. מומלץ לעיין במאמר ActivityManager.RunningAppProcessInfo.importance
כדי להבין את רמות החשיבות השונות של תהליכים.
משתמש המכשיר יכול גם לשנות באופן ידני את האופטימיזציות של ניהול צריכת האנרגיה באפליקציה, והשינוי הזה יחליף את המגבלות של קטגוריות האפליקציות במצב המתנה.
מצב האפליקציה |
משרות |
התראות |
רשת |
תהליך האפליקציה גלוי או במצב חזית |
ללא מגבלות על ביצוע |
אין הגבלות תדירות |
אין הגבלות |
תהליך האפליקציה מפעיל שירות בחזית |
אכיפת מגבלות ההרצה מבוססת על הקטגוריה של זמן ההמתנה*** |
אכיפת מגבלות התדירות מבוססת על הקטגוריה 'המתנה' |
אין הגבלות |
המשתמש מגביל באופן ידני את השימוש בסוללה של האפליקציה |
ההפעלה מוגבלת |
ההפעלה מוגבלת |
הגישה תלויה בהתנהגות של הקטגוריה במצב המתנה |
משתמש מבטל ידנית את ההגבלה על השימוש בסוללה של האפליקציה |
מגבלת ההרצות רחבה*** |
ללא מגבלות על ביצוע |
ללא הגבלה, אלא אם המכשיר במצב חיסכון בנתונים |
*** התנהגות המכסה לביצוע משימות שונתה ב-Android 16. לפני Android 16 לא הייתה הגבלת ביצוע כשהאפליקציה הפעילה שירות בחזית או שהמשתמש לא הגביל את השימוש בסוללה של האפליקציה.
הגבלות משאבים על סמך קטגוריית האפליקציה במצב המתנה
הערה: הערכים בטבלה הזו לא מבטיחים את משכי הזמן לביצוע, כי תנאים אחרים במכשיר או שינויים בקטגוריות יכולים להשפיע על אילוצים של משאבים. הערכים עשויים להשתנות גם בגרסאות עתידיות של Android.
אפשר להגביל משימות רגילות, משימות מהירות, התראות וגישה לרשת על סמך הקטגוריה של האפליקציה במצב המתנה. כדי להבין איך הקטגוריות של מצב המתנה של האפליקציה משפיעות על האפליקציה, תוכלו להיעזר בהנחיות הבאות לגבי המגבלות המשוערות של ניהול צריכת החשמל. כדי לשפר את הביצועים, מומלץ לפעול בהתאם לשיטות המומלצות למצב המתנה של אפליקציות ולבצע אופטימיזציה של השימוש בסוללה בממשקי API לתזמון משימות.
חשוב לדעת: החל מ-Android 13, הקטגוריה של האפליקציה במצב המתנה לא קובעת יותר כמה הודעות FCM בעדיפות גבוהה האפליקציה יכולה להשתמש בהן.
קטגוריית אפליקציה במצב המתנה |
עבודות רגילות* |
משימות בעדיפות גבוהה** |
התראות |
רשת |
פעיל: |
עד 20 דקות בתקופה של 60 דקות רצופות*** |
עד 30 דקות בתקופה של 24 שעות רצופות*** |
ללא מגבלות על ביצוע |
אין הגבלות |
קבוצת עבודה: |
עד 10 דקות בתקופה של 4 שעות |
עד 15 דקות בתקופה של 24 שעות |
מוגבל ל-10 בשעה |
אין הגבלות |
תדירות גבוהה: |
עד 10 דקות בתקופה של 12 שעות |
עד 10 דקות בתקופה של 24 שעות |
מוגבלת ל-2 בשעה |
אין הגבלות |
נדיר: |
עד 10 דקות בתקופה של 24 שעות |
עד 10 דקות בתקופה של 24 שעות |
מוגבלת לשעה אחת |
מצב מושבת |
מוגבלת: |
פעם ביום למשך עד 10 דקות |
עד 5 דקות בחלון זמן נע של 24 שעות |
מצב מושבת |
* משימות רגילות מתארות משימות שלא משתמשות בדגלים setUserInitiated(true)
או setExpedited(true)
ב-JobScheduler, או בעובדים מואצים ב-WorkManager.
** למשימות מהירות יש מגבלת ביצוע נפרדת ממשימות רגילות. אפשר להגדיר ב-WorkManager שהן ימשיכו לפעול לפי מגבלות הביצוע של משימות רגילות אחרי שהמגבלות של המשימות המהירות ינוצלו.
*** התנהגות המכסה לביצוע משימות שונתה ב-Android 16. לפני Android 16 לא הייתה הגבלת ביצוע כשהאפליקציה נמצאת בקטגוריה 'המתנה פעילה'.
שינויים בהתנהגות של Android שמשפיעים על מגבלות המשאבים
בעדכוני Android הבאים בוצעו שינויים במגבלות המשאבים של האפליקציות.
Android 16
שינוי בהתנהגות של אופטימיזציות המכסות ב-JobScheduler
ב-Android התאימו את המכסה של זמן הריצה של משימות רגילות ומשימות מואצות על סמך הגורמים הבאים:
- הקטגוריה של האפליקציה במצב המתנה
- אם העבודה מתחילה לפעול בזמן שהאפליקציה נמצאת במצב 'ראשי'
- אם המשימה מתבצעת בזמן הפעלת שירות בחזית
Android 13
שינוי בעדיפות גבוהה בהתנהגות המכסות של העברת הודעות בענן ב-Firebase (FCM)
- קטגוריות של אפליקציות במצב המתנה כבר לא קובעות כמה הודעות FCM בעדיפות גבוהה האפליקציה יכולה להשתמש בהן.
- מעכשיו, המערכת מורידה את רמת העדיפות של הודעות בעדיפות גבוהה אם היא מזהה אפליקציה ששולחת באופן קבוע הודעות בעדיפות גבוהה שלא גורמות להצגת התראה.
- להנחיות עדכניות לגבי הודעות בעדיפות גבוהה, אפשר לעיין במסמכי התיעוד של firebase בנושא הגדרה וניהול של עדיפות ההודעות.
Android 9
השקת התכונה 'קטגוריות של אפליקציות במצב המתנה'
ב-Android 9 נוספה תכונה חדשה לניהול הסוללה – קטגוריות של אפליקציות במצב המתנה. קטגוריות של אפליקציות במצב המתנה עוזרות למערכת לתת עדיפות לבקשות של אפליקציות למשאבים על סמך תדירות השימוש באפליקציות ותקופת השימוש האחרונה בהן. על סמך דפוסי השימוש באפליקציה, כל אפליקציה ממוקמת באחת מחמש קטגוריות תעדוף. המערכת מגבילה את המשאבים של המכשיר שזמינים לכל אפליקציה על סמך הקטגוריה שבה האפליקציה נמצאת.