يتيح الإصدار 9 من نظام التشغيل Android (المستوى 28 من واجهة برمجة التطبيقات) والإصدارات الأحدث مجموعات التطبيقات في وضع الاستعداد. تطبيقات وضع الاستعداد تساعد الحِزم النظام في منح الأولوية لطلبات التطبيقات للحصول على الموارد استنادًا إلى معدل استخدام التطبيقات ومقدار استخدامه مؤخرًا. استنادًا إلى أنماط استخدام التطبيقات، يتم وضع كل تطبيق في إحدى المجموعات الخمس ذات الأولوية. يحدّ النظام من موارد الأجهزة المتاحة لكل تطبيق استنادًا إلى الحزمة التي يندرج تحتها التطبيق.
مجموعات البيانات ذات الأولوية
ويحدِّد النظام كل تطبيق ديناميكيًا ضمن مجموعة أولويات، ويعيد تحديد التطبيقات حسب الحاجة. قد يعتمد النظام على تطبيق محمَّل مسبقًا يستخدم تعلُّم الآلة لتحديد مدى احتمالية استخدام كل تطبيق، ويعيّن التطبيقات في الحِزم المناسبة.
إذا لم يكن تطبيق النظام متوفّرًا على أحد الأجهزة، سيعمل النظام تلقائيًا على ترتيب التطبيقات استنادًا إلى وقت استخدامها مؤخرًا. يتم منح التطبيقات الأكثر نشاطًا مجموعة تمنح الأولوية الأعلى لها، ما يجعل موارد النظام متاحة للتطبيق. وعلى وجه الخصوص، تحدِّد المجموعة عدد مرات تنفيذ مهام التطبيق وعدد مرات تشغيل المنبّهات. لا تنطبق هذه القيود إلا عندما يكون الجهاز يعمل على طاقة البطارية. أثناء شحن الجهاز، لا يفرض النظام هذه القيود.
في ما يلي مجموعات الأولوية:
- نشط: التطبيق قيد الاستخدام أو تم استخدامه مؤخرًا.
- مجموعة العمل: يشير ذلك إلى أنّ التطبيق قيد الاستخدام العادي.
- كثيرًا: يتم استخدام التطبيق كثيرًا ولكن ليس يوميًا.
- نادرًا: لا يتم استخدام التطبيق بشكل متكرّر.
- محظور: يستهلك التطبيق الكثير من موارد النظام أو قد يُظهر سلوكًا غير مرغوب فيه.
بالإضافة إلى مجموعات الأولوية هذه، تتوفّر مجموعة خاصة لم يتم تشغيلها مطلقًا ل التطبيقات المثبَّتة ولكن لم يتم تشغيلها مطلقًا. يفرض النظام قيودًا صارمة على هذه التطبيقات.
الأوصاف التالية مخصّصة للحالة غير التوقّعية. في المقابل، عندما يستخدِم التوقّع تعلُّم الآلة لتوقّع السلوك، يتم اختيار الحِزم في الاستعداد لإجراءات المستخدِم التالية بدلاً من استنادها إلى الاستخدام الأخير. على سبيل المثال، قد ينتهي التطبيق المستخدَم مؤخرًا في المجموعة النادرة لأنّه يتنبّأ بأنّه قد لا يتم استخدامه لعدة ساعات.
نشِط
يكون التطبيق في حزمة نشط أثناء استخدامه أو استخدامه مؤخرًا جدًا أو عند تنفيذ أيّ من الإجراءات التالية:
- بدء نشاط
- تشغيل خدمة تعمل في المقدّمة لفترة طويلة
- أن ينقر المستخدم عليه من أحد الإشعارات
إذا كان التطبيق في الحزمة النشطة، لا يفرض النظام أي قيود على مهام التطبيق أو تنبيهاته.
يؤدي تفاعل المستخدم إلى تعيين التطبيقات على أنّها نشطة.
على Android 9 (المستوى 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" على أنّها ذات أولوية عالية عندما لا تؤدي إلى تفاعل المستخدم، قد يؤدي ذلك إلى إزالة الأولوية من الرسائل المستقبلية.
إذا تم تقسيم التطبيقات على عدة حِزم، قد تكون هذه الحِزم في مجموعات مختلفة وتملك مستويات وصول مختلفة. اختبر هذه التطبيقات باستخدام الحزم المخصصة لمجموعات بيانات مختلفة للتأكد من أن التطبيق يعمل بشكل صحيح.