لتحسين عمر بطارية الجهاز، يمكن لنظام Android التأثير على حالة الجهاز من خلال مراقبة استخدام الجهاز وحالة اليقظة. يمكن للنظام الدخول في حالة سكون لإيقاف الأنشطة مؤقتًا أثناء عدم استخدام الجهاز.
حول غفوة
يعمل Doze على إطالة عمر البطارية عن طريق تأجيل نشاط وحدة المعالجة المركزية (CPU) ونشاط الشبكة في خلفية التطبيق عندما لا يتم استخدام الجهاز لفترات طويلة.
تدخل الأجهزة الخاملة في Doze بشكل دوري إلى نافذة الصيانة، حيث يمكن للتطبيقات إكمال العمل المعلق (عمليات المزامنة والوظائف وما إلى ذلك). ثم يستأنف النعاس النوم لفترة أطول من الوقت، تليها نافذة صيانة أخرى. تستمر المنصة في تسلسل النوم/الصيانة Doze، مما يزيد من مدة الخمول في كل مرة، حتى يتم الوصول إلى الحد الأقصى لبضع ساعات من وقت النوم. في جميع الأوقات، يظل الجهاز الموجود في Doze على علم بالحركة ويترك Doze على الفور إذا تم اكتشاف الحركة.
يعمل نظام Android 7.0 والإصدارات الأحدث على توسيع ميزة Doze لتشغيل مجموعة أخف من التحسينات في كل مرة يقوم فيها المستخدم بإيقاف تشغيل شاشة الجهاز، حتى عندما يستمر المستخدم في التحرك، مما يتيح عمر بطارية أطول.
يتم إعداد خدمات النظام المهمة عمومًا من قبل الشركات المصنعة للأجهزة لإعفاءها من ميزة Doze. يمكن للمستخدمين أيضًا استثناء تطبيقات معينة من Doze باستخدام قائمة الإعدادات. ومع ذلك، قد يؤدي استثناء التطبيقات إلى استنزاف بطارية الجهاز. بشكل افتراضي، يتم تعطيل ميزة Doze في AOSP؛ للحصول على تفاصيل حول تمكين ميزة Doze، راجع دمج Doze .
متطلبات الغفوة
يتطلب دعم Doze أن يكون لدى الجهاز خدمة مراسلة سحابية، مثل Firebase Cloud Messaging (FCM) . يمكن لأحداث التشغيل الخارجية، مثل الرسائل السحابية، تنبيه التطبيقات مؤقتًا للقيام بالعمل بينما يظل الجهاز في وضع Doze.
يتطلب دعم Full Doze أيضًا وجود كاشف حركة هام (SMD) على الجهاز؛ ومع ذلك، فإن وضع Doze خفيف الوزن في Android 7.0 والإصدارات الأحدث لا يتطلب SMD. إذا تم تمكين ميزة Doze على جهاز:
- يحتوي على SMD، ويتم إجراء تحسينات Doze كاملة (بما في ذلك تحسينات خفيفة الوزن).
- لا يحتوي على SMD، فقط يتم إجراء تحسينات Doze خفيفة الوزن.
دورة حياة الغفوة
يبدأ Doze عندما تكتشف المنصة أن الجهاز خاملاً وينتهي عند حدوث واحد أو أكثر من أنشطة معايير الخروج.
يكتشف النظام الأساسي أن الجهاز خاملاً عندما:
- الجهاز ثابت (باستخدام SMD).
- شاشة الجهاز متوقفة لبعض الوقت.
لا يعمل وضع Doze أثناء توصيل جهاز يعمل بالبطارية بشاحن طاقة.
أثناء الغفوة
تحاول المنصة إبقاء النظام في حالة سكون، واستئناف العمليات العادية بشكل دوري أثناء فترة الصيانة ثم إعادة الجهاز إلى وضع السكون لفترات متكررة أطول. أثناء النوم، تكون القيود التالية نشطة:
- لا يُسمح للتطبيقات بالوصول إلى الشبكة.
- تم تجاهل Wakelocks للتطبيق.
- تم تأجيل الإنذارات يستثني منبهات المنبه والمنبهات التي تم ضبطها باستخدام
setAndAllowWhileIdle()
(يقتصر على 1 لكل 15 دقيقة لكل تطبيق أثناء استخدام Doze). هذا الاستثناء مخصص للتطبيقات (مثل التقويم) التي يجب أن تعرض إشعارات تذكير بالحدث. - لا يتم إجراء عمليات فحص Wi-Fi.
- تتم مزامنة
SyncAdapter
وتأجيل مهامJobScheduler
حتى نافذة الصيانة التالية. - يتم وضع التطبيقات التي تتلقى رسائل SMS ورسائل الوسائط المتعددة في قائمة بيضاء مؤقتة حتى تتمكن من إكمال معالجتها.
مخرج
تخرج المنصة من الجهاز من Doze عندما تكتشف:
- تفاعل المستخدم مع الجهاز
- حركة الجهاز
- يتم تشغيل شاشة الجهاز
- إنذار وشيك AlarmClock
لا تتسبب الإشعارات في خروج الجهاز من Doze.
يعمل نظام Android 7.0 والإصدارات الأحدث على توسيع ميزة Doze من خلال تمكين وضع السكون الخفيف أثناء إيقاف تشغيل الشاشة، قبل أن يصبح الجهاز خاملاً.
الشكل 1. أوضاع التجريف للأجهزة الثابتة وغير الثابتة.
فعل | نعس | غفوة خفيفة |
---|---|---|
مشغل | الشاشة مغلقة، على البطارية، ثابتة | الشاشة مغلقة، على البطارية (غير موصولة) |
توقيت | زيادة فترات متتالية مع المداومة | فترات N-دقيقة متكررة مع نوافذ الصيانة |
قيود | لا يوجد وصول إلى الشبكة، أو قفل التنبيه، أو فحص GPS/Wi-Fi؛ تم تأجيل الإنذارات والوظائف/المزامنة | لا يوجد وصول إلى الشبكة؛ تم تأجيل المهام/المزامنة باستثناء فترات الصيانة |
سلوك | تم استلام رسائل الإشعارات ذات الأولوية العالية فقط | تلقي جميع الرسائل في الوقت الحقيقي (الرسائل الفورية، والمكالمات، وما إلى ذلك)؛ تتيح رسالة الإشعارات ذات الأولوية العالية إمكانية الوصول المؤقت إلى الشبكة |
مخرج | الحركة أو تشغيل الشاشة أو المنبه | الشاشة مفتوحة |
التفاعل مع وضع الاستعداد للتطبيق
- لا يتم احتساب الوقت المستغرق في وضع Doze في وضع الاستعداد للتطبيق.
- أثناء وجود الجهاز في وضع Doze، يُسمح للتطبيقات الخاملة بإجراء العمليات العادية مرة واحدة على الأقل يوميًا.
دمج الغفوة
عند تمكين ميزة Doze، تقوم الأجهزة التي تدعم SENSOR_TYPE_SIGNIFICANT_MOTION
بإجراء تحسينات كاملة على ميزة Doze (بما في ذلك تحسينات خفيفة الوزن)؛ الأجهزة التي لا تحتوي على SMD تؤدي فقط تحسينات Doze خفيفة الوزن. يقوم Android تلقائيًا بتحديد تحسينات Doze المناسبة، كما أن تكوين البائع ليس ضروريًا.
لتمكين Doze لجهاز:
- تأكد من تثبيت خدمة المراسلة السحابية على الجهاز.
- في ملف تكوين تراكب الجهاز
overlay/frameworks/base/core/res/res/values/config.xml
، قم بتعيينconfig_enableAutoPowerModes
علىtrue
:<bool name="config_enableAutoPowerModes">true</bool>
في AOSP، يتم تعيين هذه المعلمة علىfalse
(تعطيل التجريف) افتراضيًا. - تأكد من أن التطبيقات والخدمات المحملة مسبقًا:
- استخدم إرشادات تحسين توفير الطاقة . للحصول على التفاصيل، راجع اختبار التطبيقات وتحسينها .
أو
- تم إعفاؤهم من Doze وApp Standby. للحصول على التفاصيل، راجع إعفاء التطبيقات .
- استخدم إرشادات تحسين توفير الطاقة . للحصول على التفاصيل، راجع اختبار التطبيقات وتحسينها .
- التأكد من إعفاء الخدمات الضرورية من Doze.
نصائح
- إذا كان ذلك ممكنًا، استخدم FCM للمراسلة النهائية .
- إذا كان يجب على المستخدمين رؤية إشعار على الفور، فاستخدم رسالة ذات أولوية عالية من FCM .
- قم بتوفير معلومات كافية ضمن حمولة الرسالة الأولية (لتجنب الوصول اللاحق غير الضروري إلى الشبكة).
- قم بتعيين الإنذارات الهامة باستخدام
setAndAllowWhileIdle()
وsetExactAndAllowWhileIdle()
.
اختبار وتحسين التطبيقات
اختبر جميع التطبيقات (خاصة التطبيقات المحملة مسبقًا) في وضع Doze. للحصول على التفاصيل، راجع الاختبار باستخدام Doze وApp Standby .