מערכת Android 9 (רמת API 28) כוללת תכונות חדשות לשיפור ניהול צריכת החשמל במכשיר. האלה לצד תכונות שכבר היו בגרסאות קודמות, כדי להבטיח שמשאבי המערכת מקבלים את האפליקציות שזקוקות להם ביותר.
תכונות ניהול צריכת החשמל מחולקות לשתי קטגוריות:
- קטגוריות במצב המתנה של אפליקציה
- המערכת מגבילה אפליקציות גישה למשאבים במכשיר, כמו המעבד (CPU) או הסוללה, על סמך דפוסי השימוש של המשתמש. זוהי תכונה חדשה ב-Android 9.
- שיפורים במצב חיסכון בסוללה
- כשמצב חיסכון בסוללה מופעל, המערכת מטילה הגבלות על כל האפליקציות. קיימת תכונה קיימת שיפרנו את Android 9.
קטגוריות של אפליקציות במצב המתנה
ב-Android 9 יש תכונה חדשה לניהול סוללה, קטגוריות המתנה באפליקציות. קטגוריות ההמתנה של האפליקציה עוזרות למערכת לתעדף אפליקציות בקשות למשאבים שמבוססים על משאבים לגבי תדירות השימוש באפליקציות ותדירות השימוש בהן. על סמך דפוסי השימוש באפליקציה, כל אפליקציה ממוקמת באחת מחמש קטגוריות תעדוף. המערכת מגבילה את משאבי המכשיר שזמינים לכל אפליקציה על סמך הקטגוריה שבה האפליקציה נמצאת.
חמש הקטגוריות מאפשרות לקבוע את סדר העדיפויות של האפליקציות לפי המאפיינים הבאים:
- פעיל
אפליקציה נמצאת בקטגוריה הפעילה אם המשתמש משתמש בה כרגע, לדוגמה:
- האפליקציה הפעילה פעילות
- האפליקציה מפעילה שירות שפועל בחזית
- לאפליקציה יש מתאם סנכרון שמשויך לספק תוכן שמשתמשת בו אפליקציה בחזית
- המשתמש לוחץ על התראה מהאפליקציה
אם אפליקציה נמצאת בקטגוריה הפעילה, המערכת לא מטילה הגבלות על המשימות, ההתראות או ההודעות של FCM באפליקציה.
- קבוצת עבודה
אפליקציה נמצאת בקטגוריה 'קבוצת עבודה' אם היא פועלת לעיתים קרובות אבל לא פעילה כרגע. לדוגמה, סביר להניח שאפליקציית רשת חברתית שהמשתמש מפעיל ברוב הימים תהיה בקבוצת העבודה. האפליקציות מקודמות גם לקבוצת העבודה בקטגוריה הזו אם נעשה בהם שימוש עקיף.
אם אפליקציה נמצאת בקבוצת העבודה, המערכת מטילה הגבלות קלות על היכולת שלה להריץ משימות ולהפעיל התראות. פרטים נוספים זמינים במאמר הגבלות על ניהול צריכת החשמל.
- אנשי קשר תדירים
אפליקציה נכללת בקטגוריה 'שימוש תדיר' אם משתמשים בה באופן קבוע, אבל לא בהכרח מדי יום. לדוגמה, אפליקציה למעקב אחר אימונים שהמשתמש מפעיל בחדר הכושר עשויה להיכלל בקטגוריה 'תדירות גבוהה'.
אם אפליקציה נמצאת בקטגוריה 'תדירות גבוהה', המערכת מטילה הגבלות חמורות יותר על היכולת שלה להריץ משימות ולהפעיל התראות, וגם מגבילה את מספר ההודעות בעדיפות גבוהה ב-FCM. פרטים נוספים זמינים במאמר הגבלות על ניהול צריכת החשמל.
- נדיר
אפליקציה נכללת בקטגוריה 'נדיר' אם לא משתמשים בה לעיתים קרובות. לדוגמה, אפליקציית מלון שהמשתמש מפעיל רק בזמן שהוא מתארח במלון הזה עשויה להיכלל בקטגוריה הנדירה.
אם אפליקציה נמצאת בקטגוריה הנדירה, המערכת מטילה הגבלות מחמירות על היכולת שלה להריץ משימות, להפעיל אזעקות ולקבל הודעות FCM בעדיפות גבוהה. בנוסף, המערכת מגבילה את היכולת של האפליקציה להתחבר לאינטרנט. עבור פרטים נוספים על כך, ראו הגבלות על ניהול צריכת החשמל.
- אף פעם
אפליקציות שהותקנו אבל לא פועלות אף פעם מוקצות לקטגוריה של אף פעם. המערכת מטילה הגבלות חמורות על האפליקציות האלה.
המערכת מקצה באופן דינמי כל אפליקציה לקטגוריית תעדוף, ומקצה מחדש את האפליקציות לפי הצורך. ייתכן שהמערכת תסתמך על אפליקציה שנטענה מראש שמשתמשת במכונה כדי לקבוע מה הסבירות שכל אחד מהם את האפליקציות, ומקצה את האפליקציות לקטגוריות המתאימות. אם המערכת לא נמצאת במכשיר. כברירת מחדל המערכת ממיינת את האפליקציות לפי כמה זמן הם היו בשימוש. עוד אפליקציות פעילות מוקצות לקטגוריות נותנים לאפליקציות עדיפות גבוהה יותר, שיהיו יותר משאבי מערכת שזמינים לאפליקציה. באופן ספציפי, הקטגוריה קובע את התדירות שבה המשימות של האפליקציה ירוצו, את התדירות שבה האפליקציה יכולה להפעיל והתדירות שבה האפליקציה יכולה לקבל הודעות בעדיפות גבוהה Firebase Cloud הודעות (FCM). ההגבלות האלה חלות רק כשהמכשיר פועל באמצעות סוללה. המערכת לא כופה את המגבלות האלה על אפליקציות בזמן שהמכשיר בטעינה.
כל יצרן יכול להגדיר קריטריונים משלו לאופן שבו אפליקציות לא פעילות
שהוקצו לקטגוריות. אסור לנסות להשפיע על הקטגוריה שהאפליקציה שלכם שייכת
הוקצה ל. במקום זאת, כדאי להתמקד בכך שהאפליקציה תפעל בצורה תקינה בכל קטגוריה שבה היא תופיע. כדי לברר באיזה קטגוריה האפליקציה נמצאת כרגע, אפשר להפעיל את השיטה החדשה UsageStatsManager.getAppStandbyBucket()
.
שיטות מומלצות
אם האפליקציה שלכם כבר פועלת לפי השיטות המומלצות נמנום ואפליקציה במצב המתנה, הטיפול בתכונות החדשות של ניהול צריכת החשמל לא אמור להיות מסובך. עם זאת, יכול להיות שחלק מההתנהגויות של האפליקציות שפעלו טוב בעבר יגרמו עכשיו לבעיות.
- אין לנסות להשפיע על המערכת כדי שהאפליקציה תסווג לקטגוריה מסוימת. שיטות הקטגוריה של המערכת יכולות להשתנות, וכל יצרן מכשיר יכול לבחור לכתוב אפליקציית קטגוריה משלו עם אלגוריתם משלו. במקום זאת, חשוב לוודא שהאפליקציה פועלת בצורה תקינה בכל הקטגוריות.
- אם לאפליקציה אין פעילות במרכז האפליקציות, יכול להיות שהיא אף פעם לא תקודם לקטגוריה הפעילה. כדאי לעצב מחדש את האפליקציה כך פעילות.
- אם לא ניתן לבצע פעולה כלשהי בתגובה להתרעות של האפליקציה, המשתמשים לא יוכלו להפעיל את קידום האפליקציה לקטגוריה הפעילה על ידי אינטראקציה עם ההתראות. במקרה כזה, כדאי לעצב מחדש כמה התראות מתאימות כך שיאפשרו למשתמש להשיב. להנחיות מסוימות, אפשר לעיין עיצוב הודעות ב-Material Design דפוסים.
באופן דומה, אם האפליקציה לא מציגה התראה בעת קבלת בהודעת FCM בעדיפות גבוהה, לא תאפשר למשתמש ליצור אינטראקציה עם האפליקציה וכך לקדם אותה הקטגוריה הפעילה. למעשה, השימוש היחיד המיועד להודעות FCM בעדיפות גבוהה הוא שליחת התראה למשתמש, ולכן המצב הזה לא אמור לקרות אף פעם. אם לסמן באופן בלתי הולם הודעת FCM כהודעה בעלת עדיפות גבוהה, כשהיא לא מופעלת אינטראקציה עם המשתמשים, עלולה להיות לכך השלכות שליליות אחרות; לדוגמה, מצב כזה עלול לגרום לניצול מלא של המכסה של האפליקציה, מצב שעלול לגרום בדחיפות הודעות FCM יטופלו כהודעות בעדיפות רגילה.
הערה: אם המשתמש סוגר התראה שוב ושוב, המערכת מציעה לו לחסום את ההתראה הזו בעתיד. אל תשלחו למשתמשים ספאם עם התראות רק כדי לנסות לשמור על האפליקציה בקטגוריה הפעילה.
אם האפליקציות מחולקות לכמה חבילות, יכול להיות שהחבילות האלה נמצאות בקטגוריות שונות, ולכן יש להן רמות גישה שונות. חשוב לבדוק אפליקציות כאלה עם החבילות שהוקצו לקטגוריות שונות כדי לוודא שהאפליקציה פועלת כמו שצריך.
שיפורים בחיסכון בסוללה
ב-Android 9 יש כמה שיפורים במצב חיסכון בסוללה. יצרן המכשיר קובע את ההגבלות המדויקות שחלות עליו. לדוגמה, ב- לפיתוח של AOSP, המערכת מחילה את ההגבלות הבאות:
- המערכת מעבירה אפליקציות למצב המתנה של אפליקציה באופן אגרסיבי יותר, במקום ממתין עד שהאפליקציה תהיה לא פעילה.
- מגבלות הפעלה ברקע חלות על כל האפליקציות, ללא קשר ל-API המטורגט שלהן ברמה.
- ייתכן ששירותי המיקום יושבתו כשהמסך כבוי.
- לאפליקציות ברקע אין גישה לרשת.
בנוסף, יש אופטימיזציות אחרות של חשמל שספציפיות למכשיר. פרטים מלאים זמינים בדף שמתאר את ההגבלות על ניהול צריכת החשמל.
כמו תמיד, מומלץ לבדוק את האפליקציה בזמן שמצב 'חיסכון בסוללה' פעיל. אפשר להפעיל את מצב החיסכון בסוללה באופן ידני במסך הגדרות > חיסכון בסוללה של המכשיר.
בדיקה ופתרון בעיות
התכונות החדשות של ניהול צריכת החשמל משפיעות על כל האפליקציות שפועלות במכשירי Android 9, בין אם או שהאפליקציות מטרגטות את Android 9, חשוב לוודא שהאפליקציה פועלת בצורה תקינה במכשירים האלה.
חשוב לבדוק את התרחישים לדוגמה העיקריים של האפליקציה במגוון תנאים, כדי לראות איך תכונות ניהול צריכת החשמל פועלות יחד. אפשר להשתמש ב-Android בפקודות של 'גשר ניפוי באגים' כדי להפוך חלק להפעיל או להשבית תכונות שונות.
פקודות גשר לניפוי באגים ב-Android
אפשר להשתמש בפקודות מעטפת של Android Debug Bridge כדי לבדוק כמה מהתכונות של ניהול צריכת החשמל.
למידע על שימוש ב-ADB כדי להעביר את המכשיר למצב Doze, ראו בדיקה באמצעות Doze ו-App Standby.
קטגוריות בהמתנה של אפליקציות
אפשר להשתמש ב-ADB כדי להקצות את האפליקציה באופן ידני לקטגוריה של אפליקציות במצב המתנה. כדי לשנות את הקטגוריה של אפליקציה, משתמשים בפקודה הבאה:
$ adb shell am set-standby-bucket packagename active|working_set|frequent|rare
אפשר גם להשתמש בפקודה הזו כדי להגדיר כמה חבילות בבת אחת:
$ adb shell am set-standby-bucket package1 bucket1 package2 bucket2...
כדי לבדוק באיזו קטגוריה האפליקציה נמצאת, מריצים את הפקודה
$ adb shell am get-standby-bucket [packagename]
אם לא מעבירים פרמטר packagename, הפקודה תציג את הקטגוריות של כל האפליקציות. האפליקציה יכולה גם לגלות את הקטגוריה שלה בזמן הריצה על ידי קריאה
השיטה החדשה
UsageStatsManager.getAppStandbyBucket()
חיסכון בסוללה
יש כמה פקודות לבדיקה של התנהגות האפליקציה בתנאים של צריכת אנרגיה נמוכה.
כדי לדמות את ניתוק המכשיר, משתמשים בפקודה
$ adb shell dumpsys battery unplug
כדי לבדוק איך המכשיר פועל בתנאים של צריכת חשמל נמוכה, משתמשים בפקודה הבאה:
$ adb shell settings put global low_power 1
בסיום הבדיקה, אפשר לבטל את ההגדרות הידניות של המכשיר באמצעות הפקודה הבאה:
$ adb shell dumpsys battery reset