קטגוריות בהמתנה של אפליקציות

מערכת Android 9 (רמת API 28) ואילך תומכת בקטגוריות של אפליקציות במצב המתנה. קטגוריות של אפליקציות במצב המתנה עוזרות למערכת לתת עדיפות לבקשות של אפליקציות למשאבים על סמך תדירות השימוש באפליקציות ותקופת השימוש האחרונה בהן. בהתאם לדפוסי השימוש באפליקציות, כל אחד האפליקציה ממוקמת באחת מחמש קטגוריות בעדיפות גבוהה. המערכת מגבילה את המכשיר הזמינים לכל אפליקציה בהתאם לקטגוריה שבה היא נמצאת.

קטגוריות בעדיפות גבוהה

המערכת מקצה באופן דינמי כל אפליקציה לקטגוריית עדיפות, ומקצה מחדש את אפליקציות לפי הצורך. יכול להיות שהמערכת תסתמך על אפליקציה שהוטענה מראש, שמשתמשת בלמידת מכונה כדי לקבוע את הסבירות לשימוש בכל אפליקציה, ומקצה את האפליקציות לקטגוריות המתאימות.

אם אפליקציית המערכת לא נמצאת במכשיר, המערכת תמייד את האפליקציות לפי תדירות השימוש בהן לאחרונה. אפליקציות פעילות יותר מוקצות לקטגוריות עם עדיפות גבוהה יותר, כך שיהיו לאפליקציה יותר משאבי מערכת. באופן ספציפי, הקטגוריה קובעת את התדירות שבה יתבצעו המשימות של האפליקציה ואת התדירות שבה האפליקציה תוכל להפעיל התראות. ההגבלות האלה רק כשהמכשיר פועל באמצעות סוללה. בזמן שהמכשיר בטעינה, המערכת לא מטילה את ההגבלות האלה.

קטגוריות העדיפות הן:

  • פעיל: משתמשים באפליקציה או השתמשו בה לאחרונה מאוד.
  • קבוצת עבודה: האפליקציה נמצאת בשימוש קבוע.
  • שימוש לעיתים קרובות: האפליקציה נמצאת בשימוש לעיתים קרובות, אבל לא מדי יום.
  • נדיר: לא משתמשים באפליקציה לעיתים קרובות.
  • מוגבלת: האפליקציה צורכת הרבה משאבי מערכת או עשויה להציג התנהגות לא רצויה.

בנוסף לקטגוריות העדיפות האלה, יש אף פעם קטגוריה מיוחדת אפליקציות שמותקנות אבל לא פועלות אף פעם. המערכת מטילה הגבלות חמורות על האפליקציות האלה.

התיאורים הבאים מיועדים למצבים שאינם חזויים. לעומת זאת, כאשר החיזוי משתמש בלמידת מכונה כדי לחזות התנהגות, הקטגוריות נבחרות לצפות לקראת הפעולות הבאות של המשתמש, במקום על סמך שימוש שנעשה בו לאחרונה. עבור לדוגמה, אפליקציה שנעשה בה שימוש לאחרונה עשויה להגיע לקטגוריה הנדירה כי צופה שיכול להיות שהאפליקציה לא תהיה בשימוש במשך כמה שעות.

פעיל

אפליקציה נמצאת בקטגוריה פעילה בזמן שהיא הייתה בשימוש, הייתה בשימוש לאחרונה או כשהוא מבצע אחת מהפעולות הבאות:

  • התחלת פעילות.
  • הפעלת שירות שפועל בחזית למשך זמן רב.
  • המשתמש הקיש מהתראה.

אם אפליקציה נמצאת בקטגוריה הפעילה, המערכת לא מטילה הגבלות על המשימות או ההתראות של האפליקציה.

אינטראקציה של משתמשים מקצה אפליקציות כפעילות

ב-Android 9 (רמת API 28) ואילך, כשהמשתמש מקיים אינטראקציה עם האפליקציה בתוך בדרכים מסוימות, המערכת מציבה את האפליקציה באופן זמני בקטגוריה הפעילה. אחרי שהמשתמש מפסיק את האינטראקציה עם האפליקציה, המערכת ממיינת אותו לקטגוריה על סמך היסטוריית השימוש.

דוגמאות לאינטראקציות שמפעילות את התנהגות המערכת הזו:

  • המשתמש מקיש על התראה שהאפליקציה שולחת.

  • המשתמש יוצר אינטראקציה עם שירות שפועל בחזית באפליקציה באמצעות הקשה על מדיה לחצן.

  • המשתמש מתחבר לאפליקציה במהלך האינטראקציה עם Android Automotive OS, שבה האפליקציה משתמשת בשירות שפועל בחזית או ב-CONNECTION_TYPE_PROJECTION.

קבוצת עבודה

אפליקציה נמצאת בקטגוריה working set אם היא פועלת לעיתים קרובות אבל לא פעילה. לדוגמה, אפליקציית רשת חברתית שהמשתמש מפעיל כמעט מדי יום צפויה להיכלל בקבוצת העבודה. האפליקציות יקודמו גם לקטגוריית קבוצת העבודה אם שעושים בהם שימוש עקיף.

אם אפליקציה נמצאת בקבוצת העבודה, המערכת מטילה הגבלות קלות על היכולת שלה להריץ משימות ולהפעיל התראות. לפרטים נוספים, אפשר לעיין במאמר בנושא ניהול צריכת חשמל הגבלות.

אנשי קשר תדירים

אפליקציה נכללת בקטגוריה frequent אם משתמשים בה באופן קבוע, אבל לא בהכרח מדי יום. לדוגמה, אפליקציה למעקב אחר אימונים שהמשתמש מפעיל בחדר הכושר עשויה להיכלל בקטגוריה 'תדירות גבוהה'.

אם אפליקציה נמצאת בקטגוריה 'תדירות גבוהה', המערכת מטילה הגבלות חמורות יותר על היכולת שלה להריץ משימות ולהפעיל התראות. לפרטים נוספים, אפשר לעיין במאמר בנושא ניהול צריכת חשמל הגבלות.

נדיר

אפליקציה נכללת בקטגוריה נדירה אם לא משתמשים בה לעיתים קרובות. לדוגמה, אפליקציית מלון שהמשתמש מפעיל רק בזמן שהותו במלון הזה עשויה להיכלל בקטגוריה הנדירה.

אם אפליקציה נמצאת בקטגוריה הנדירה, המערכת מטילה הגבלות מחמירות על היכולת שלה להריץ משימות ולהפעיל התראות. המערכת גם מגבילה את היכולת של האפליקציה להתחבר לאינטרנט. פרטים נוספים זמינים במאמר מגבלות של ניהול צריכת החשמל.

מוגבל

הקטגוריה הזו, שנוספה ב-Android 12 (רמת API 31), היא בעלת העדיפות הנמוכה ביותר וההגבלות החמורות ביותר מבין כל הקטגוריות. המערכת מביאה בחשבון את התנהגות מסוימת, כגון התדירות שבה המשתמש מקיים אינטראקציה איתו, כדי להחליט אם להציב את האפליקציה בקטגוריה המוגבלת.

ב-Android 13 (רמת API 33) ואילך, אלא אם האפליקציה עומדת בדרישות פטור, המערכת תציב את האפליקציה בקטגוריה המוגבלת במצבים הבאים:

  • המשתמש לא ביצע אינטראקציה עם האפליקציה במשך מספר ימים מסוים. במצב מופעל Android 12 (רמת API 31) ו-12L (רמת API 32), מספר הימים הוא 45. ב-Android 13 מספר הימים מופחת ל-8.

  • האפליקציה שלך מפעילה מספר גדול מדי של שידורים או קישורים בפרק זמן של 24 שעות.

אם המערכת תוסיף את האפליקציה שלכם לקטגוריה המוגבלת, יחולו עליה המגבלות הבאות:

  • אפשר להריץ משימות פעם ביום בסשן של 10 דקות. במהלך הסשן הזה, המערכת מקבצת את המשימות של האפליקציה שלכם עם משימות של אפליקציות אחרות.
    • משימות מוגבלות לא פועלות מעצמן. צריך להיות לפחות משימה אחת נוספת שפועלת או בהמתנה באותו זמן, שיכולה לכלול כל משימה אחרת.
  • האפליקציה יכולה להריץ פחות משימות מהירות, בהשוואה למצב שבו המערכת מציבה את האפליקציה בקטגוריה פחות מגבילה.
  • האפליקציה יכולה להפעיל אזעקה אחת ביום. התראה זו יכולה להיות מדויקת התראה או התראה לא מדויקת.

פטורים מהקטגוריה המוגבלת

סוגי האפליקציות הבאים פטורים מכניסה לקטגוריה המוגבלת, לעקוף את הטריגר של חוסר פעילות, גם ב-Android 12 ואילך:

הערכת קטגוריית העדיפות

כדי לבדוק לאיזו קטגוריה האפליקציה מוקצית, מבצעים את אחת מהפעולות הבאות:

  • קוראים לפונקציה getAppStandbyBucket().

  • מריצים את הפקודה הבאה בחלון מסוף:

    adb shell am get-standby-bucket PACKAGE_NAME

המערכת תגביל את האפליקציה בכל פעם שהיא תופיע בקטגוריה של אפליקציות במצב המתנה שהערך שלה גבוה מ-STANDBY_BUCKET_ACTIVE (10).

שיטות מומלצות

אם האפליקציה פועלת לפי השיטות המומלצות לגבי 'נמנום' ו'מצב המתנה', לתכונות מאוחרות יותר של ניהול צריכת החשמל לא קשות. אבל יש התנהגויות מסוימות באפליקציות שעבדו טוב בעבר, עלולות לגרום לבעיות.

  • אל תנסו לתמרן את המערכת כדי להכניס את האפליקציה בקטגוריה שלכם. השיטה של המערכת לקביעת עדיפות עשויה להשתנות, וכל מכשיר יכול להיות שהיצרן יבחר לכתוב אפליקציה משלו לקטגוריות באלגוריתם כלשהו. במקום זאת, חשוב לוודא שהאפליקציה פועלת בצורה תקינה בכל הקטגוריות.
  • אם לאפליקציה אין פעילות במרכז האפליקציות, יכול להיות שהיא אף פעם לא תקודם לקטגוריה הפעילה. כדאי לשקול לעצב מחדש את האפליקציה כך שתכלול פעילות כזו.
  • אם המשתמשים לא יכולים לקיים אינטראקציה עם ההתראות של האפליקציה, הם לא יכולים להפעיל את קידום האפליקציה לקטגוריה הפעילה. במקרה כזה, כדאי לשקול לעצב מחדש חלק מההתראות שמאפשרות למשתמשים לבצע פעולות. הנחיות מסוימות מפורטות בתבניות העיצוב של התראות ב-Material Design.

  • אם באפליקציה לא מוצגת התראה כשמתקבלת הודעה בעדיפות גבוהה מ-Firebase Cloud Messaging‏ (FCM), המשתמש לא יכול לקיים אינטראקציה עם האפליקציה ולכן לא ניתן להעביר אותה לקטגוריה הפעילה. למעשה, השימוש היחיד המיועד להודעות FCM בעדיפות גבוהה הוא שליחת התראה למשתמש, ולכן המצב הזה לא אמור לקרות. ב-12L (רמת API 32) ומטה, אם אתם מסמנים באופן בלתי הולם הודעת FCM כהודעה גבוהה בעדיפות גבוהה, אם היא לא מעודדת אינטראקציות של משתמשים, הן עשויות לגרום לתעדוף של הודעות עתידיות.

  • אם האפליקציות מחולקות בין כמה חבילות, יכול להיות שהחבילות האלה לקטגוריות שונות ויש להן רמות גישה שונות. בודקים את האפליקציות האלה עם החבילות שהוקצו לקטגוריות שונות כדי לוודא שהאפליקציה פועלת כמו שצריך.