إدارة الطاقة

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

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

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

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

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

تُعطى الأولوية للمجموعات الخمس للتطبيقات في مجموعات حسب السمات التالية:

نشِط

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

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

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

طقم العمل

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

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

متكرّر

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

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

نادرًا

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

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

أبدًا

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

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

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

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

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

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

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

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

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

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

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

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

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

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

تؤثّر الميزات الجديدة لإدارة الطاقة في جميع التطبيقات التي تعمل على الأجهزة التي تعمل بالإصدار 9 من نظام التشغيل Android، سواء كانت التطبيقات تستهدف الإصدار 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