ניהול צריכת החשמל של הפלטפורמה באמצעות Doze

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

מידע על נמנום

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

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

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

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

הדרישות לשימוש במצב נמנום

כדי שתהיה תמיכה ב-Doze, צריך להיות במכשיר שירות העברת הודעות בענן, כמו Firebase Cloud Messaging‏ (FCM). אירועי הפעלה חיצוניים, כמו הודעות בענן, יכולים להעיר באופן זמני אפליקציות כדי לבצע משימות בזמן שהמכשיר נשאר במצב שינה.

כדי לתמוך במצב Doze במלואו, נדרש גם גלאי תנועה משמעותי (SMD) במכשיר. עם זאת, כדי לתמוך במצב Doze הקל ב-Android 7.0 ואילך, לא נדרש SMD. אם התכונה 'דוז' מופעלת במכשיר:

  • יש לו SMD, מתבצעות אופטימיזציות מלאות של Doze (כולל אופטימיזציות קלות).
  • אין לו SMD, מתבצעות רק אופטימיזציות קלילות של Doze.

מחזור החיים של Doze

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

הפלטפורמה מזהה שמכשיר לא פעיל כאשר:

  • המכשיר נייח (באמצעות SMD).
  • מסך המכשיר כבוי למשך זמן מה.

מצב שינה לא מופעל כשמכשיר שמופעל על סוללה מחובר למטען.

במהלך מצב נמנום

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

  • לאפליקציות אין גישה לרשת.
  • המערכת מתעלמת מנעילות ההתעוררות של האפליקציה.
  • ההתראות מושהות. ההגבלה לא חלה על התראות של שעון מעורר ועל התראות שהוגדרו באמצעות setAndAllowWhileIdle() (מוגבלת להתראה אחת לכל 15 דקות לכל אפליקציה במצב Doze). הפטור הזה מיועד לאפליקציות (כמו יומן Google) שצריכות להציג התראות על תזכורות לאירועים.
  • לא מתבצעים חיפושים של נקודות Wi-Fi.
  • סנכרון של SyncAdapter ומשימות של JobScheduler יושהו עד לחלון הזמן הבא לתחזוקה.
  • אפליקציות שמקבלות הודעות SMS ו-MMS מועברות לרשימת ההיתרים הזמנית כדי שיוכלו להשלים את העיבוד.

יציאה

הפלטפורמה מוציאה את המכשיר ממצב Doze כשהיא מזהה:

  • אינטראקציה של משתמשים עם המכשיר
  • תנועה של המכשיר
  • המסך של המכשיר מופעל
  • אזעקה קרובה בשעון מעורר

התראות לא גורמות למכשיר לצאת ממצב שינה.

ב-Android מגרסה 7.0 ואילך, התכונה Doze מורחבת על ידי הפעלת מצב שינה קל במהלך השבתת המסך, לפני שהמכשיר יהיה במצב חוסר פעילות.

איור 1. מצבי שינה למכשירים ניידים ולא נייחים.

פעולה נמנום נמנום קל
טריגר המסך כבוי, המכשיר פועל על סוללה, המכשיר נייח המסך כבוי, במצב סוללה (לא מחובר)
תזמון תקופות הולכות וגדלות עם תחזוקה תקופות חוזרות של N דקות עם חלונות תחזוקה
הגבלות אין גישה לרשת, נעילת התעוררות או סריקת GPS/Wi-Fi. ההתראות והמשימות/הסנכרון יושהו. אין גישה לרשת. משימות או סנכרון נדחים, מלבד בחלונות תחזוקה
התנהגות קבלת התראות דחוף רק בעדיפות גבוהה כל ההודעות שמתקבלות בזמן אמת (הודעות מיידיות, שיחות וכו'). הודעה בעדיפות גבוהה ב-Push מאפשרת גישה זמנית לרשת.
יציאה תנועה, מסך פעיל או שעון מעורר מסך מופעל

אינטראקציה עם 'אפליקציה במצב המתנה'

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

שילוב של Doze

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

כדי להפעיל את Doze במכשיר:

  1. מוודאים שהמכשיר כולל שירות הודעות בענן.
  2. בקובץ התצורה של שכבת-העל של המכשיר overlay/frameworks/base/core/res/res/values/config.xml, מגדירים את config_enableAutoPowerModes לערך true:
    <bool name="config_enableAutoPowerModes">true</bool>
    
    ב-AOSP, כברירת מחדל, הפרמטר הזה מוגדר כ-false (Doze מושבת).
  3. מוודאים שהאפליקציות והשירותים שהוגדרו מראש:
  4. מוודאים שהשירותים הנחוצים פטורים מ-Doze.

טיפים

בדיקה ואופטימיזציה של אפליקציות

כדאי לבדוק את כל האפליקציות (במיוחד אפליקציות שהוגדרו מראש) במצב Doze. מידע נוסף זמין במאמר בדיקה עם Doze ו-App Standby.