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