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

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

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