إدارة الطاقة

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

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

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

مجموعات بيانات وضع الاستعداد للتطبيقات

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

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

نشِط

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

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

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

مجموعة العمل

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

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

متكرّر

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

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

نادرًا

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

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

أبدًا

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

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

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

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

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

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

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

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

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

يجري نظام التشغيل 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