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

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

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

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

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

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

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

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

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

פעיל

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

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

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

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

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

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

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

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

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

ערכת עבודה

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

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

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

אפליקציה נכללת בקטגוריה 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).

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

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

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

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

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