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

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

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

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

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

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

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

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

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

פעיל

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

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

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

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

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

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

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

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

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

ערכת עבודה

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

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

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

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

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

נדיר

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

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

מוגבל

לקטגוריה הזו, שנוספה ב-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 כהודעה גבוהה בעדיפות גבוהה, אם היא לא מעודדת אינטראקציות של משתמשים, הן עשויות לגרום לתעדוף של הודעות עתידיות.

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