إدارة الطاقة

يقدّم نظام التشغيل Android 9 (المستوى 28 من واجهة برمجة التطبيقات) ميزات جديدة لتحسين إدارة الطاقة في الجهاز. هذه بالإضافة إلى الميزات التي كانت موجودة بالفعل في الإصدارات السابقة، لضمان منح موارد النظام للتطبيقات التي تكون في أمس الحاجة إليها

تندرج ميزات إدارة الطاقة ضمن فئتين:

حِزم تطبيقات وضع الاستعداد
يحدّ النظام من وصول التطبيقات إلى موارد الجهاز، مثل وحدة المعالجة المركزية أو البطارية، استنادًا إلى أنماط استخدام المستخدم. هذه ميزة جديدة Android 9.
تحسينات في ميزة "توفير شحن البطارية"
عند تفعيل ميزة "توفير شحن البطارية"، يفرض النظام قيودًا على جميع التطبيقات. هذه ميزة حالية تم تحسينه باستخدام Android 9.

حِزم "تطبيقات في وضع الاستعداد"

يقدّم نظام التشغيل Android 9 ميزة جديدة لإدارة البطارية، وهي "مجموعات التطبيقات في وضع الاستعداد". تساعد حزم تطبيقات الاستعداد في منح الأولوية للنظام طلبات الحصول على الموارد على مدى حداثة التطبيقات ومعدّل استخدامها استنادًا إلى أنماط استخدام التطبيقات، يتم وضع كل تطبيق في إحدى مجموعات الأولويات الخمس. النظام يحدّ من موارد الجهاز المتاحة لكل تطبيق استنادًا إلى مجموعة بيانات التطبيق فيها.

تمنح الحِزم الخمس الأولوية للتطبيقات في مجموعات حسب السمات التالية:

نشِط

يكون التطبيق في الحزمة النشطة إذا كان المستخدم يستخدم التطبيق حاليًا، وذلك للحصول على مثال:

  • أطلق التطبيق نشاطًا
  • تشغيل التطبيق لخدمة تعمل في المقدّمة
  • يحتوي التطبيق على محوِّل مزامنة مرتبط بموفِّر محتوى يستخدمه تطبيق في المقدّمة.
  • ينقر المستخدم على إشعار من التطبيق.

إذا كان التطبيق في الحزمة النشطة، لن يفرض النظام أي قيود على وظائف التطبيق أو المنبّهات أو رسائل "المراسلة عبر السحابة الإلكترونية من Firebase".

مجموعة العمل

يكون التطبيق في حزمة المجموعة العاملة إذا كان يتم تشغيله بشكل متكرّر ولكنّه ليس قيد الاستخدام حاليًا. على سبيل المثال، يعد تطبيق الوسائط الاجتماعية الذي يطلقه المستخدم في معظم الأيام من المحتمل أن يكونوا في مجموعة العمل. ويتم أيضًا ترقية التطبيقات إلى مجموعة العمل الحزمة إذا تم استخدامها بشكل غير مباشر.

إذا كان أحد التطبيقات في مجموعة العمل، يفرض النظام قيودًا طفيفة على والقدرة على تشغيل المهام وتشغيل التنبيهات. لمعرفة التفاصيل، يُرجى الاطّلاع على قيود إدارة الطاقة.

متكررة

يكون التطبيق في حزمة متكررة إذا تم استخدامه بانتظام، ولكن ليس بالضرورة كل يوم على سبيل المثال، قد يكون تطبيق تتبُّع التمارين الرياضية الذي يستخدمه المستخدم في النادي الرياضي ضمن المجموعة المتكرّرة.

إذا كان التطبيق في حزمة "الرسائل المتكرّرة"، يفرض النظام قيودًا أشد على قدرته على تنفيذ المهام وتشغيل الإنذارات، ويفرض أيضًا حدًا أقصى على رسائل FCM ذات الأولوية العالية. لمعرفة التفاصيل، يُرجى الاطّلاع على قيود إدارة الطاقة.

إنجاز نادر

يكون التطبيق في الحزمة النادرة إذا لم يتم استخدامه كثيرًا. على سبيل المثال، قد يكون تطبيق الفندق الذي لا يستخدمه المستخدم إلا أثناء إقامته في ذلك الفندق ضمن حزمة التطبيقات النادرة.

إذا كان التطبيق في حزمة التطبيقات النادرة، يفرض النظام قيودًا صارمة على قدرته على تنفيذ المهام وتشغيل الإنذارات وتلقّي رسائل ميزة "المراسلة من خلال السحابة الإلكترونية من Firebase" ذات الأولوية العالية. ويحدّ النظام أيضًا من قدرة التطبيق على الاتصال بالإنترنت. بالنسبة يُرجى الاطّلاع على قيود إدارة الطاقة.

أبدًا

يتم تعيين التطبيقات التي تم تثبيتها ولكن لم يتم تشغيلها مطلقًا إلى حزمة "لم يتم تشغيلها مطلقًا". يفرض النظام قيودًا صارمة على هذه التطبيقات.

ويحدِّد النظام كل تطبيق ديناميكيًا ضمن مجموعة أولويات، ويعيد تحديد التطبيقات حسب الحاجة. قد يعتمد النظام على تطبيق محمَّل مسبقًا يستخدم تعلُّم الآلة لتحديد مدى احتمالية استخدام كل تطبيق، ويحدِّد التطبيقات إلى الحِزم المناسبة. إذا لم يكن تطبيق النظام متوفّرًا على أحد الأجهزة، يُرتّب النظام التطبيقات تلقائيًا استنادًا إلى وقت استخدامها مؤخرًا. يتم تخصيص المزيد من التطبيقات النشطة إلى الحِزم التي ومنح التطبيقات أولوية أعلى، مما يجعل المزيد من موارد النظام المتاحة للتطبيق. وعلى وجه الخصوص، المجموعة عدد مرات تشغيل وظائف التطبيق وعدد المرات التي يمكن أن يشغلها التطبيق والمنبّهات، وعدد المرّات التي يمكن للتطبيق أن يحصل على أولوية عالية من Firebase Cloud رسائل (FCM) لا تنطبق هذه القيود إلا عندما يكون الجهاز مشحونًا بالطاقة من البطارية، ولا يفرض النظام هذه القيود على التطبيقات عندما يكون الجهاز قيد الشحن.

يمكن لكلّ مُصنّع ضبط معاييره الخاصة لتحديد كيفية تحديد التطبيقات غير النشطة إلى مجموعات. يجب عدم محاولة التأثير في الحزمة التي يتم تحديد تطبيقك لها. بدلاً من ذلك، ركِّز على التأكّد من أنّ تطبيقك يعمل بشكل جيد في أي ملف شخصي يقع فيه. يمكن لتطبيقك التعرّف على الحزمة التي ينتمي إليها حاليًا من خلال استدعاء الطريقة الجديدة UsageStatsManager.getAppStandbyBucket()

أفضل الممارسات

إذا كان تطبيقك يتبع بالفعل أفضل ممارسات القيلولة ووضع الاستعداد للتطبيقات، لن يكون التعامل مع الميزات الجديدة لإدارة الطاقة أمرًا صعبًا. ومع ذلك، قد تتسبب بعض سلوكيات التطبيقات التي كانت جيدة في السابق في حدوث مشكلات.

  • لا تحاول التلاعب بالنظام لوضع تطبيقك في مجموعة واحدة أو أخرى. يمكن أن تتغيّر طرق تجميع البيانات في النظام، ويمكن لكل مصنع للأجهزة اختيار كتابة تطبيق تجميع البيانات الخاص به باستخدام أسلوبه الخاص. بدلاً من ذلك، تأكَّد من أنّ تطبيقك يتصرف بشكل مناسب بغض النظر عن الذي يكون فيه.
  • إذا لم يكن للتطبيق نشاط مشغِّل، قد لا يتم ترقيته مطلقًا إلى الحزمة النشطة. قد ترغب في إعادة تصميم تطبيقك ليتضمن الأخرى.
  • إذا لم تكن إشعارات التطبيق قابلة للتنفيذ، لن يتمكن المستخدمون من تشغيلها الترويج للتطبيق على الحزمة النشطة من خلال التفاعل مع الإشعارات. ضِمن في هذه الحالة، قد تحتاج إلى إعادة تصميم بعض الإشعارات المناسبة لكي تسمح رد من المستخدم. للحصول على بعض الإرشادات، يمكنك الاطّلاع على تصميم إشعارات التصميم المتعدد الأبعاد الأنماط.
  • وبالمثل، إذا لم يعرض التطبيق إشعارًا عند تلقّي رسالة "المراسلة عبر السحابة الإلكترونية من Firebase" ذات الأولوية العالية، لن يمنح المستخدم فرصة للتفاعل مع التطبيق وبالتالي ترقيته إلى الحزمة النشطة. في الواقع، الغرض الوحيد عن استخدام رسائل "المراسلة عبر السحابة الإلكترونية من Firebase" ذات الأولوية العالية هو دفع إشعار إلى المستخدم، لذلك لا ينبغي أن يحدث هذا الموقف أبدًا. إذا كنت وضع علامة على رسالة FCM على أنها ذات أولوية عالية بشكل غير ملائم عندما لا يتم تشغيلها تفاعل المستخدم، فقد يتسبب ذلك في عواقب سلبية أخرى؛ على سبيل المثال، إلى استنفاد حصته في التطبيق، ما يتسبب في اتخاذ إجراءات ملحّة رسائل "المراسلة عبر السحابة الإلكترونية من Firebase" التي يتم التعامل معها باعتبارها ذات أولوية عادية.

    ملاحظة: إذا رفض المستخدم إشعارًا بشكل متكرر، يمنح النظام المستخدم خيار حظر هذا الإشعار في المستقبل. لا ترسِل إشعارات غير مرغوب فيها إلى المستخدمين لمجرد محاولة إبقاء تطبيقك في ملف الترشيح النشط.

  • إذا تم تقسيم التطبيقات على عدة حِزم، قد تكون هذه الحِزم في مجموعات مختلفة، وبالتالي يكون لها مستويات وصول مختلفة. يجب عليك التأكد من باختبار هذه التطبيقات باستخدام الحزم المخصصة لمجموعات مختلفة للتأكد من التطبيق بشكل صحيح.

تحسينات على ميزة "توفير شحن البطارية"

يُجري Android 9 عددًا من التحسينات على وضع "توفير شحن البطارية". تُحدِّد الشركة المصنّعة للجهاز القيود الدقيقة التي تم فرضها. على سبيل المثال، في ينشئ AOSP، يطبّق النظام القيود التالية:

  • يضع النظام التطبيقات في وضع الاستعداد للتطبيقات بشكل أكثر قوة بدلاً من في انتظار توقف التطبيق عن العمل.
  • تنطبق حدود التنفيذ في الخلفية على جميع التطبيقات، بغض النظر عن مستوى واجهة برمجة التطبيقات المستهدَفة.
  • قد تكون خدمات الموقع الجغرافي غير مفعَّلة عندما تكون الشاشة مُطفأة.
  • لم تتمكن تطبيقات الخلفية من الوصول إلى الشبكة.

بالإضافة إلى ذلك، هناك تحسينات أخرى خاصة بالطاقة على الجهاز. لكامل الشاشة يُرجى مراجعة الصفحة التي تصف إدارة الطاقة القيود.

كما هو الحال دائمًا، ننصحك باختبار تطبيقك عندما تكون ميزة "توفير شحن البطارية" مفعّلة. يمكنك تفعيل ميزة "توفير شحن البطارية" يدويًا من خلال شاشة الإعدادات > ميزة توفير شحن البطارية على الجهاز.

الاختبار وتحديد المشاكل وحلّها

تؤثر ميزات إدارة الطاقة الجديدة في جميع التطبيقات التي تعمل على أجهزة Android 9، سواء كانت التطبيقات تستهدف الإصدار 9 من Android أم لا. من المهم التأكّد من أنّ تطبيقك يعمل بشكل سليم على هذه الأجهزة.

احرص على اختبار حالات الاستخدام الرئيسية لتطبيقك في مجموعة متنوعة من الظروف لمعرفة كيفية تفاعل ميزات إدارة الطاقة مع بعضها. يمكنك استخدام أوامر Android Debug Bridge لتفعيل بعض ميزات التطبيق وإيقافها.

أوامر Android Debug Bridge

يمكنك استخدام أوامر واجهة أوامر Android Debug Bridge لاختبار العديد من ميزات إدارة الطاقة.

للحصول على معلومات عن استخدام ADB لوضع جهازك في Doze، يمكنك الاطّلاع على الاختبار باستخدام ميزة "القيلولة" و"وضع الاستعداد للتطبيقات"

حزم تطبيقات وضع الاستعداد

يمكنك استخدام 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