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

الإصدار 9 من Android (مستوى واجهة برمجة التطبيقات 28) والإصدارات الأحدث لمجموعات بيانات وضع التطبيقات. تساعد مجموعات بيانات التطبيقات في وضع مجموعات البيانات على تحديد أولوية طلبات التطبيقات للموارد بناءً على مدى وتيرة استخدام التطبيقات مؤخرًا. استنادًا إلى أنماط استخدام التطبيق، يتم وضع كل تطبيق في إحدى مجموعات البيانات الخمسة ذات الأولوية. يحدّد النظام موارد الجهاز المتاحة لكل تطبيق استنادًا إلى مجموعة البيانات التي تم تثبيت التطبيق عليها.

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

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

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

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

  • نشط: يتم استخدام التطبيق أو تم استخدامه مؤخرًا جدًا.
  • مجموعة العمل: التطبيق قيد الاستخدام بشكل منتظم.
  • تطبيق متكرر: غالبًا ما يتم استخدام التطبيق، ولكن ليس يوميًا.
  • نادرًا: لا يتم استخدام التطبيق بشكل متكرر.
  • محظور: يستهلك التطبيق قدرًا كبيرًا من موارد النظام أو قد يُظهر سلوكًا غير مرغوب فيه.

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

تشمل الأوصاف التالية الحالة غير القائمة على التوقّعات. وفي المقابل، عندما تتوقّع التوقّعات تعلُّم الآلة لتوقّع السلوك، يتم اختيار مجموعات البيانات توقعًا للإجراءات التالية للمستخدم بدلاً من استنادًا إلى الاستخدام الأخير. على سبيل المثال، قد ينتهي استخدام تطبيق تم استخدامه مؤخرًا في مجموعة البيانات النادرة لأنّ تعلُّم الآلة يتوقّع أنّه قد لا يتم استخدام التطبيق لعدة ساعات.

نشِط

يتوفّر التطبيق في مجموعة البيانات النشطة أثناء استخدامه، أو مُستخدَم مؤخرًا، أو عندما ينفّذ أيًا مما يلي:

  • لتشغيل نشاط.
  • تشغيل خدمة تعمل في المقدّمة لفترة طويلة
  • ينقر المستخدم على الإشعار من خلال تلقّي إشعار.

إذا كان التطبيق متاحًا في مجموعة البيانات النشطة، لن يضع النظام أي قيود على وظائف التطبيق أو المنبّهات.

يحدّد تفاعل المستخدم التطبيقات باعتبارها نشطة

على نظام التشغيل Android 9 (المستوى 28 من واجهة برمجة التطبيقات) والإصدارات الأحدث، عندما يتفاعل المستخدم مع تطبيقك بطرق معيّنة، يضع النظام تطبيقك مؤقتًا في مجموعة البيانات النشطة. بعد أن يتوقف المستخدم عن التفاعل مع تطبيقك، يضعه النظام في مجموعة بيانات استنادًا إلى سجلّ الاستخدام.

وفي ما يلي أمثلة على التفاعلات التي تؤدي إلى سلوك هذا النظام:

  • ينقر المستخدم على إشعار يرسله تطبيقك.

  • يتفاعل المستخدم مع خدمة تعمل في المقدّمة في تطبيقك من خلال النقر على زر الوسائط.

  • يتصل المستخدم بتطبيقك أثناء التفاعل مع نظام التشغيل Android Automotive، حيث يستخدم تطبيقك خدمة تعمل في المقدّمة أو CONNECTION_TYPE_PROJECTION.

مجموعة عمل

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

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

متكررة

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

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

نادرة

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

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

محصورة الاستخدام

هذه الحزمة التي تمت إضافتها في الإصدار 12 من نظام التشغيل Android (مستوى واجهة برمجة التطبيقات 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).

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

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

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

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

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