يتيح الإصدار 9 من نظام التشغيل Android (المستوى 28 من واجهة برمجة التطبيقات) والإصدارات الأحدث مجموعات التطبيقات في وضع الاستعداد. تطبيقات وضع الاستعداد تساعد الحِزم النظام في منح الأولوية لطلبات التطبيقات للحصول على الموارد استنادًا إلى معدل استخدام التطبيقات ومقدار استخدامه مؤخرًا. استنادًا إلى أنماط استخدام التطبيقات، يتم وضع كل تطبيق في إحدى المجموعات الخمس ذات الأولوية. يحدّ النظام من موارد الأجهزة المتاحة لكل تطبيق استنادًا إلى الحزمة التي يندرج تحتها التطبيق.
الحِزم ذات الأولوية
ويحدِّد النظام كل تطبيق ديناميكيًا ضمن مجموعة أولويات، ويعيد تحديد التطبيقات حسب الحاجة. قد يعتمد النظام على تطبيق محمَّل مسبقًا يستخدم تعلُّم الآلة لتحديد مدى احتمالية استخدام كل تطبيق، ويحدِّد التطبيقات ضمن الحِزم المناسبة.
إذا لم يكن تطبيق النظام متوفّرًا على أحد الأجهزة، سيعمل النظام تلقائيًا على ترتيب التطبيقات استنادًا إلى وقت استخدامها مؤخرًا. يتم منح التطبيقات الأكثر نشاطًا مجموعة أولوية أعلى، ما يجعل المزيد من موارد النظام متاحة للتطبيق. وعلى وجه الخصوص، تحدّد المجموعة عدد مرات تنفيذ مهام التطبيق وعدد مرات تشغيل المنبّهات. لا تنطبق هذه القيود إلا عندما يكون الجهاز يعمل على طاقة البطارية. ولا يفرض النظام هذه القيود عندما يكون الجهاز قيد الشحن.
في ما يلي مجموعات الأولوية:
- نشط: يتم استخدام التطبيق أو تم استخدامه مؤخرًا جدًا.
- مجموعة العمل: يشير ذلك إلى أنّ التطبيق قيد الاستخدام العادي.
- كثيرًا: يتم استخدام التطبيق كثيرًا ولكن ليس يوميًا.
- نادر: لا يتم استخدام التطبيق بشكل متكرّر.
- محظور: يستهلك التطبيق الكثير من موارد النظام أو قد يُظهر سلوكًا غير مرغوب فيه.
بالإضافة إلى مجموعات الأولوية هذه، تتوفّر مجموعة خاصة لم يتم تشغيلها مطلقًا ل التطبيقات المثبَّتة ولكن لم يتم تشغيلها مطلقًا. يفرض النظام قيودًا صارمة على هذه التطبيقات.
الأوصاف التالية مخصّصة للحالة غير التوقّعية. في المقابل، عندما يستخدِم التوقّع تعلُّم الآلة لتوقّع السلوك، يتم اختيار الحِزم في الاستعداد لإجراءات المستخدِم التالية بدلاً من استنادها إلى الاستخدام الأخير. على سبيل المثال، قد ينتهي التطبيق المستخدَم مؤخرًا في المجموعة النادرة لأنّه يتنبّأ بأنّه قد لا يتم استخدامه لعدة ساعات.
نشِط
يكون التطبيق في حزمة نشط أثناء استخدامه أو إذا تم استخدامه مؤخرًا جدًا أو عند تنفيذ أيّ من الإجراءات التالية:
- بدء نشاط
- تشغيل خدمة تعمل في المقدّمة لفترة طويلة
- النقر عليه من قِبل المستخدم من إشعار
إذا كان التطبيق في الحزمة النشطة، لا يفرض النظام أي قيود على مهام التطبيق أو تنبيهاته.
يُحدِّد تفاعل المستخدم التطبيقات على أنّها نشطة.
في الإصدار 9 من نظام التشغيل Android (المستوى 28 لواجهة برمجة التطبيقات) والإصدارات الأحدث، عندما يتفاعل المستخدم مع تطبيقك بطرق معيّنة، يضع النظام تطبيقك مؤقتًا في الحزمة النشطة. بعد أن يتوقّف المستخدم عن التفاعل مع تطبيقك، يضع النظام المستخدم في أحد الحزم استنادًا إلى سجلّ الاستخدام.
في ما يلي أمثلة على التفاعلات التي تؤدي إلى سلوك النظام هذا:
ينقر المستخدم على إشعار يرسله تطبيقك.
يتفاعل المستخدم مع خدمة تعمل في المقدّمة في تطبيقك من خلال النقر على زر الوسائط.
يتصل المستخدم بتطبيقك أثناء التفاعل مع نظام التشغيل Android Automotive، حيث يستخدم تطبيقك إما خدمة تعمل في المقدّمة أو
CONNECTION_TYPE_PROJECTION
.
مجموعة العمل
يكون التطبيق في حزمة مجموعة العمل إذا كان يتم تشغيله بشكل متكرّر ولكنّه غير نشط. على سبيل المثال، من المرجّح أن يكون تطبيق وسائل التواصل الاجتماعي الذي يشغّله المستخدم يوميًا تقريبًا ضمن مجموعة التطبيقات النشطة. ويتم أيضًا ترقية التطبيقات إلى حزمة المجموعة العاملة في حال استخدامها بشكل غير مباشر.
إذا كان التطبيق ضمن مجموعة التطبيقات التي تعمل، يفرض النظام قيودًا خفيفة على قدرته على تنفيذ المهام وتشغيل الإنذارات. لمعرفة التفاصيل، يُرجى الاطّلاع على قيود إدارة الطاقة.
متكررة
يندرج التطبيق ضمن المجموعة متكرّر إذا كان يتم استخدامه بانتظام ولكن ليس بالضرورة كل يوم. على سبيل المثال، قد يكون تطبيق تتبُّع التمارين الرياضية الذي يستخدمه المستخدم في النادي الرياضي ضمن المجموعة المتكرّرة.
إذا كان التطبيق مُدرَجًا في مجموعة التطبيقات المتكرّرة، يفرض النظام قيودًا أقوى على قدرته على تنفيذ المهام وتشغيل المنبّهات. لمعرفة التفاصيل، يُرجى الاطّلاع على قيود إدارة الطاقة.
إنجاز نادر
يتم وضع التطبيق في حزمة التطبيقات النادرة إذا لم يتم استخدامه كثيرًا. على سبيل المثال، قد يكون تطبيق فندق لا يستخدمه المستخدم إلا أثناء إقامته في ذلك الفندق ضمن مجموعة التطبيقات المستخدمة بشكل نادر.
إذا كان التطبيق في حزمة التطبيقات النادرة، يفرض النظام قيودًا صارمة على قدرته على تنفيذ المهام وتشغيل المنبّهات. يحدّ النظام أيضًا من قدرة التطبيق على الاتصال بالإنترنت. لمعرفة التفاصيل، يُرجى الاطّلاع على قيود إدارة الطاقة.
محظور
هذه المجموعة، التي تمت إضافتها في الإصدار 12 من Android (المستوى 31 لواجهة برمجة التطبيقات)، لها أولوية أدنى وحدود استخدام أعلى من جميع المجموعات. يأخذ النظام في الاعتبار سلوك تطبيقك، مثل عدد المرات التي يتفاعل فيها المستخدم معه، لتحديد ما إذا كان يجب وضع تطبيقك في المجموعة المحظورة.
في الإصدار 13 من نظام التشغيل Android (المستوى 33 لواجهة برمجة التطبيقات) والإصدارات الأحدث، يضع النظام تطبيقك في المجموعة المحظورة في الحالات التالية، ما لم يكن مؤهلاً للحصول على إعفاء:
لا يتفاعل المستخدم مع تطبيقك لعدد محدّد من الأيام. في الإصدارين Android 12 (المستوى 31 لواجهة برمجة التطبيقات) و12L (المستوى 32 لواجهة برمجة التطبيقات)، يبلغ عدد الأيام 45 يومًا. يقلل نظام التشغيل Android 13 عدد الأيام إلى 8.
يُجري تطبيقك عددًا كبيرًا من عمليات البث أو عمليات الربط خلال فترة 24 ساعة.
إذا وضع النظام تطبيقك في حزمة التطبيقات المحظورة، تنطبق القيود التالية:
- يمكنك تنفيذ المهام مرة واحدة في اليوم في جلسة مجمّعة مدتها 10 دقائق. خلال
هذه الجلسة، يجمع النظام مهام تطبيقك مع مهام التطبيقات الأخرى.
- لا يتم تنفيذ المهام المحظورة تلقائيًا. يجب أن تكون هناك مهمة واحدة على الأقل أخرى قيد التنفيذ أو في انتظار المراجعة في الوقت نفسه، ويمكن أن تتضمّن أي مهمة أخرى.
- يمكن لتطبيقك تنفيذ عدد أقل من المهام المُعجَّلة مقارنةً بما إذا كان النظام يضع تطبيقك في حزمة أقل تقييدًا.
- يمكن لتطبيقك تشغيل منبّه واحد في اليوم. يمكن أن يكون هذا التنبيه انذارًا دقيقًا أو انذارًا غير دقيق.
الاستثناءات من الحزمة المحظورة
يتم إعفاء الأنواع التالية من التطبيقات من الدخول إلى الحزمة المحظورة وتجاوز عامل تشغيل التنشيط بسبب عدم النشاط، حتى على الإصدار 12 من نظام التشغيل Android والإصدارات الأحدث:
- تطبيقات الأجهزة المصاحبة
- التطبيقات التي تعمل على جهاز في الوضع التجريبي
- تطبيقات مالك الجهاز
- تطبيقات مالك الملف التجاري
- التطبيقات الثابتة
- تطبيقات شبكة VPN
- التطبيقات التي لها الدور
ROLE_DIALER
- التطبيقات التي عيّنها المستخدم صراحةً لتقديم وظائف "غير مقيّدة" في إعدادات النظام
- التطبيقات التي تتضمّن تطبيقات مصغّرة نشطة
- التطبيقات التي تم منحها أحد الأذونات التالية على الأقل:
تقييم حزمة الأولوية
لمعرفة الحزمة التي تم تعيين تطبيقك إليها، نفِّذ أحد الإجراءات التالية:
يُرجى الاتصال على
getAppStandbyBucket()
.نفِّذ الأمر التالي في نافذة وحدة طرفية:
adb shell am get-standby-bucket PACKAGE_NAME
يحدّ النظام من أداء تطبيقك عند وضعه في مجموعة "تطبيقات في وضع الاستعداد"
التي تكون قيمتها أكبر من STANDBY_BUCKET_ACTIVE
(10).
أفضل الممارسات
إذا كان تطبيقك يتّبع أفضل الممارسات المتعلّقة بميزة "الوضع المنخفض" ووضع "الاستعداد" للتطبيقات، لن يكون من الصعب استخدام ميزات إدارة الطاقة اللاحقة. ومع ذلك، قد تؤدي بعض سلوكيات التطبيق التي كانت تعمل بشكل جيد في السابق إلى حدوث مشاكل.
- لا تحاول التلاعب بالنظام لوضع تطبيقك في مجموعة معيّنة. يمكن أن تتغيّر طريقة النظام في تحديد الأولوية، وقد يختار كل مصنع للأجهزة كتابة تطبيق تجميعه الخاص باستخدام أسلوبه الخاص في التصنيف. بدلاً من ذلك، تأكَّد من أنّ تطبيقك يعمل بشكلٍ مناسب بغض النظر عن الحزمة التي يندرج ضمنها.
- إذا لم يكن للتطبيق نشاط مشغّل، قد لا يتم ترقيته مطلقًا إلى الحزمة النشطة. ننصحك بإعادة تصميم تطبيقك لتوفير نشاط مماثل.
إذا لم يتمكّن المستخدمون من التفاعل مع إشعارات التطبيق، لن يتمكّنوا من تفعيل عرض التطبيق الترويجي في الحزمة النشطة. في هذه الحالة، ننصحك بمحاولة إعادة تصميم بعض الإشعارات التي تتيح للمستخدمين التفاعل. للاطّلاع على بعض الإرشادات، راجِع نماذج تصميم الإشعارات في التصميم المتعدد الأبعاد.
إذا لم يعرض التطبيق إشعارًا عند تلقّي رسالة "المراسلة عبر السحابة الإلكترونية من Firebase" (FCM) ذات الأولوية العالية، لن يتمكّن المستخدم من التفاعل مع التطبيق، وبالتالي لن يتم ترقيته إلى الحزمة النشطة. في الواقع، إنّ الاستخدام الوحيد المقصود لرسائل "المراسلة عبر السحابة الإلكترونية من Firebase" ذات الأولوية العالية هو إرسال إشعار إلى المستخدم، لذلك يجب ألا يحدث هذا الموقف. في الإصدار 12L (المستوى 32 من واجهة برمجة التطبيقات) والإصدارات الأقدم، إذا حددْت بشكل غير ملائم رسالة من "المراسلة عبر السحابة الإلكترونية من Firebase" على أنّها ذات أولوية عالية عندما لا تؤدي إلى تفاعل المستخدم، قد يؤدي ذلك إلى إزالة الأولوية من الرسائل المستقبلية.
إذا تم تقسيم التطبيقات على عدة حِزم، قد تكون هذه الحِزم في مجموعات مختلفة وتملك مستويات وصول مختلفة. اختبِر هذه التطبيقات باستخدام الحِزم المخصّصة لحِزم مختلفة للتأكّد من سلوك التطبيق بشكلٍ سليم.