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

يتوافق 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 والإصدارات الأحدث:

تقييم حزمة الأولوية

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

  • الاتصال بالرقم getAppStandbyBucket()

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

    adb shell am get-standby-bucket PACKAGE_NAME

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

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

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

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

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

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