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

يتوافق 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 دقائق. خلال هذه الجلسة، يجمع النظام مهام تطبيقك مع مهام التطبيقات الأخرى.
    • لا يتم تشغيل الوظائف المحظورة من تلقاء نفسها. يجب أن تكون هناك وظيفة أخرى على الأقل قيد التشغيل أو معلقة في نفس الوقت، والتي يمكن أن تتضمن أي وظيفة أخرى.
  • يمكن أن ينفّذ تطبيقك عددًا أقل من الوظائف السريعة مقارنةً بالوقت الذي يضع فيه النظام تطبيقك في حزمة أقل تقييدًا.
  • يمكن لتطبيقك أن يستدعي تنبيهًا واحدًا في اليوم. قد يكون هذا المنبّه إما منبهًا دقيقًا أو منبّهًا غير دقيق.

الإعفاءات من الحزمة المحظورة

تُستثنى الأنواع التالية من التطبيقات من الدخول إلى الحزمة المحظورة وتتجاوز مشغِّل عدم النشاط حتى على نظام التشغيل Android 12 والإصدارات الأحدث:

تقييم مجموعة البيانات ذات الأولوية

لمعرفة الحزمة التي تم تخصيص تطبيقك لها، يمكنك تنفيذ أحد الإجراءات التالية:

  • يمكنك الاتصال بالرقم getAppStandbyBucket().

  • شغِّل الأمر التالي في نافذة طرفية:

    adb shell am get-standby-bucket PACKAGE_NAME

ويفرض النظام قيودًا على تطبيقك كلما تم وضعه في حزمة تطبيقات وضع الاستعداد التي تكون قيمتها أكبر من STANDBY_BUCKET_ACTIVE (10).

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

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

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

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

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