يقدّم Android 9 (المستوى 28 من واجهة برمجة التطبيقات) ميزات جديدة لتحسين إدارة طاقة الأجهزة. هذه التغييرات، إلى جانب الميزات التي كانت موجودة بالفعل في الإصدارات السابقة، يساعد لضمان منح موارد النظام للتطبيقات التي تكون في أمس الحاجة إليها
تنقسم ميزات إدارة الطاقة إلى فئتين:
- حِزم تطبيقات وضع الاستعداد
- يقيّد النظام عمل التطبيقات الوصول إلى موارد الجهاز مثل وحدة المعالجة المركزية (CPU) أو البطارية بناءً على أنماط الاستخدام لدى المستخدم هذه ميزة جديدة Android 9.
- تحسينات في ميزة "توفير شحن البطارية"
- عند تفعيل ميزة "توفير شحن البطارية"، يضع النظام قيودًا على جميع التطبيقات. هذه ميزة حالية تم تحسينه باستخدام Android 9.
حزم تطبيقات وضع الاستعداد
يقدّم Android 9 ميزة جديدة لإدارة البطارية، وهي "حزم تطبيقات الاستعداد". تساعد حزم تطبيقات وضع الاستعداد للنظام في تحديد أولويات التطبيقات طلبات الحصول على الموارد على مدى حداثة التطبيقات ومعدّل استخدامها استنادًا إلى استخدام التطبيق أنماط، يتم وضع كل تطبيق في واحدة من المجموعات الخمس ذات الأولوية. النظام يحدّ من موارد الجهاز المتاحة لكل تطبيق استنادًا إلى مجموعة بيانات التطبيق في.
تعطي المجموعات الخمس الأولوية للتطبيقات في مجموعات وفقًا للخصائص التالية:
- نشِط
يكون التطبيق في الحزمة النشطة إذا كان المستخدم يستخدم التطبيق حاليًا، وذلك للحصول على مثال:
- أطلق التطبيق نشاطًا
- تشغيل التطبيق لخدمة تعمل في المقدّمة
- يتضمّن التطبيق محوّل مزامنة مرتبطًا بموفّر محتوى يستخدمه أحد تطبيق يعمل في المقدّمة
- ينقر المستخدم على إشعار من التطبيق.
إذا كان التطبيق في الحزمة النشطة، لن يفرض النظام أي قيود على وظائف التطبيق أو المنبّهات أو رسائل "المراسلة عبر السحابة الإلكترونية من Firebase".
- مجموعة العمل
يكون التطبيق في حزمة مجموعة العمل إذا كان يتم تشغيله كثيرًا ولكنه غير متاح حاليًا. نشطة. على سبيل المثال، يعد تطبيق الوسائط الاجتماعية الذي يطلقه المستخدم في معظم الأيام من المحتمل أن يكونوا في مجموعة العمل. تتم أيضًا ترقية التطبيقات إلى مجموعة العمل. البيانات في حال استخدامها بشكل غير مباشر.
إذا كان أحد التطبيقات في مجموعة العمل، يفرض النظام قيودًا طفيفة على والقدرة على تشغيل المهام وتشغيل التنبيهات. للحصول على التفاصيل، يمكنك مراجعة قيود إدارة التشغيل:
- متكررة
يكون التطبيق في حزمة متكررة إذا تم استخدامه بانتظام، ولكن ليس بالضرورة كل يوم على سبيل المثال، تطبيق لتتبع التمرين يستخدمه المستخدم في صالة الألعاب الرياضية في المجموعة المتكررة.
في حال كان التطبيق ضِمن الحزمة المتكررة، يفرض النظام قيودًا أكثر صرامة على وقدرته على تشغيل المهام وتشغيل الإنذارات، كما يفرض قيودًا على الرسائل ذات الأولوية العالية من خدمة "المراسلة عبر السحابة الإلكترونية من Firebase". للحصول على التفاصيل، يمكنك مراجعة قيود إدارة التشغيل:
- إنجاز نادر
يكون التطبيق في الحزمة النادرة إذا لم يتم استخدامه كثيرًا. مثلاً، تطبيق فنادق الذي يجريه المستخدم أثناء إقامته في هذا الفندق فقط في حالة دُلو.
إذا كان التطبيق في مجموعة نادرة، يفرض النظام قيودًا صارمة على وقدرته على تنفيذ المهام وتشغيل التنبيهات واستلام الرسائل ذات الأولوية العالية من خدمة "المراسلة عبر السحابة الإلكترونية من Firebase". ويحدّ النظام أيضًا من قدرة التطبيق على الاتصال بالإنترنت. بالنسبة يُرجى الاطّلاع على قيود إدارة الطاقة.
- أبدًا
يتم تعيين التطبيقات التي تم تثبيتها ولكن لم يتم تشغيلها مطلقًا إلى حزمة التطبيقات التي لم يتم تشغيلها مطلقًا. يفرض النظام قيودًا صارمة على هذه التطبيقات.
يعيّن النظام كل تطبيق ديناميكيًا في حزمة ذات أولوية، ويعيد تعيين التطبيقات حسب الحاجة. قد يعتمد النظام على تطبيق تم تحميله مسبقًا ويستخدم الجهاز. تعلم تحديد مدى احتمالية استخدام التطبيق، وتعيّن التطبيقات إلى الحِزم المناسبة. إذا أكمل النظام أنّ التطبيق غير متوفّر على أحد الأجهزة، يصنّف النظام التطبيقات تلقائيًا استنادًا إلى ومدى حداثة استخدامها. يتم تخصيص المزيد من التطبيقات النشطة إلى الحِزم التي ومنح التطبيقات أولوية أعلى، مما يجعل المزيد من موارد النظام المتاحة للتطبيق. وعلى وجه الخصوص، المجموعة عدد مرات تشغيل وظائف التطبيق وعدد المرات التي يمكن أن يشغلها التطبيق والمنبّهات، وعدد المرّات التي يمكن للتطبيق أن يحصل على أولوية عالية من Firebase Cloud رسائل (FCM) لا تسري هذه القيود إلا عندما يكون الجهاز يعمل على طاقة البطارية، النظام ولا يفرض هذه القيود على التطبيقات أثناء شحن الجهاز.
يمكن لكل شركة مصنّعة وضع معايير خاصة بها لكيفية عمل التطبيقات غير النشطة.
المخصصة للمجموعات. يجب عدم محاولة التأثير في حزمة تطبيقك.
الذي تم تكليفهم به. بدلاً من ذلك، ركِّز على التأكّد من أنّ تطبيقك يتصرف بشكل جيد في جميع المجالات
أي وعاء قد يكون فيه. يمكن لتطبيقك التعرّف على الحزمة التي ينتمي إليها حاليًا من خلال
استدعاء الطريقة الجديدة
UsageStatsManager.getAppStandbyBucket()
أفضل الممارسات
إذا كان تطبيقك يتبع بالفعل أفضل ممارسات القيلولة ووضع الاستعداد للتطبيقات، لن يكون التعامل مع الميزات الجديدة لإدارة الطاقة أمرًا صعبًا. ومع ذلك، قد تتسبب بعض سلوكيات التطبيقات التي كانت جيدة في السابق في حدوث مشكلات.
- لا تحاول التلاعب بالنظام لوضع تطبيقك في مجموعة بيانات واحدة أو البعض يمكن أن تتغيّر طرق تجميع البيانات في النظام، وسيتمكّن جميع الأجهزة يمكن للشركة المصنّعة اختيار كتابة تطبيق التجميع الخاص بها للخوارزمية. بدلاً من ذلك، تأكَّد من أنّ تطبيقك يتصرف بشكل مناسب بغض النظر عن الذي يكون فيه.
- إذا كان أحد التطبيقات لا يحتوي على نشاط مشغّل التطبيقات، قد لا تتم ترقيته إلى مجموعة بيانات نشطة. قد ترغب في إعادة تصميم تطبيقك ليتضمن الأخرى.
- إذا لم تكن إشعارات التطبيق قابلة للتنفيذ، لن يتمكن المستخدمون من تشغيلها الترويج للتطبيق على الحزمة النشطة من خلال التفاعل مع الإشعارات. ضِمن في هذه الحالة، قد تحتاج إلى إعادة تصميم بعض الإشعارات المناسبة لكي تسمح رد من المستخدم. للحصول على بعض الإرشادات، يمكنك الاطّلاع على تصميم إشعارات التصميم المتعدد الأبعاد الأنماط.
وبالمثل، إذا لم يعرض التطبيق إشعارًا عند تلقّي ذات أولوية عالية في خدمة FCM، لن تمنح المستخدم فرصة للتفاعل مع التطبيق وبالتالي الترويج له على المجموعة النشطة. في الواقع، الغرض الوحيد عن استخدام رسائل "المراسلة عبر السحابة الإلكترونية من Firebase" ذات الأولوية العالية هو دفع إشعار إلى المستخدم، لذلك لا ينبغي أن يحدث هذا الموقف أبدًا. إذا كنت وضع علامة على رسالة FCM على أنها ذات أولوية عالية بشكل غير ملائم عندما لا يتم تشغيلها تفاعل المستخدم، فقد يتسبب ذلك في عواقب سلبية أخرى؛ على سبيل المثال، إلى استنفاد حصته في التطبيق، ما يتسبب في اتخاذ إجراءات ملحّة رسائل "المراسلة عبر السحابة الإلكترونية من Firebase" التي يتم التعامل معها باعتبارها ذات أولوية عادية.
ملاحظة: إذا رفض المستخدم الإشعار بشكل متكرر، فسيتم إلى المستخدم خيار حظر هذا الإشعار في المستقبل. لا يُسمح بإرسال إشعارات غير مرغوب فيها إلى المستخدم لمحاولة إبقاء تطبيقك في حزمة نشطة
في حال تقسيم التطبيقات على حزم متعددة، قد تكون هذه الحِزم في حزمًا مختلفة، وبالتالي تكون لها مستويات وصول مختلفة. يجب عليك التأكد من باختبار هذه التطبيقات باستخدام الحزم المخصصة لمجموعات مختلفة للتأكد من التطبيق بشكل صحيح.
تحسينات على ميزة "توفير شحن البطارية"
يُجري Android 9 عددًا من التحسينات على وضع "توفير شحن البطارية". تُحدِّد الشركة المصنّعة للجهاز القيود الدقيقة التي تم فرضها. على سبيل المثال، في ينشئ AOSP، يطبّق النظام القيود التالية:
- يضع النظام التطبيقات في وضع الاستعداد للتطبيقات بشكل أكثر قوة بدلاً من في انتظار توقف التطبيق عن العمل.
- تنطبق حدود التنفيذ في الخلفية على جميع التطبيقات، بغض النظر عن واجهة برمجة التطبيقات المستهدَفة. المستوى.
- قد يتم إيقاف خدمات الموقع الجغرافي عندما تكون الشاشة مطفأة.
- لم تتمكن تطبيقات الخلفية من الوصول إلى الشبكة.
بالإضافة إلى ذلك، هناك تحسينات أخرى في الطاقة خاصة بالجهاز. لكامل الشاشة يُرجى مراجعة الصفحة التي تصف إدارة الطاقة القيود.
وكما هو الحال دائمًا، يُفضَّل اختبار التطبيق عندما يكون وضع "توفير شحن البطارية" مفعَّلاً. إِنْتَ تفعيل ميزة "توفير شحن البطارية" يدويًا من خلال الإعدادات > على الجهاز. البطارية شاشة "التوفير"
الاختبار وتحديد المشاكل وحلّها
تؤثر الميزات الجديدة لإدارة الطاقة على جميع التطبيقات التي تعمل على أجهزة Android 9، سواء تستهدف التطبيقات الإصدار 9 من نظام Android. من المهم التأكّد من أنّ تطبيقك يعمل بشكل صحيح على هذه الأجهزة.
احرص على اختبار حالات الاستخدام الرئيسية لتطبيقك وفقًا لمجموعة من الشروط، للاطّلاع على كيفية تفاعل ميزات إدارة الطاقة مع بعضها البعض. يمكنك استخدام Android أوامر Debug Bridge لتحويل بعض تشغيل الميزات وإيقاف تشغيلها.
أوامر Android Debug Bridge
يمكنك استخدام أوامر واجهة أوامر Android Debug Bridge لاختبار العديد من ميزات إدارة الطاقة.
للحصول على معلومات عن استخدام ADB لوضع جهازك في Doze، يمكنك الاطّلاع على الاختبار باستخدام ميزة "القيلولة" و"وضع الاستعداد للتطبيقات"
حزم تطبيقات وضع الاستعداد
يمكنك استخدام ADB لضبط تطبيقك يدويًا على حزمة App Standby. لتغيير حزمة أحد التطبيقات، استخدِم الأمر التالي:
$ 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