يتوافق الإصدار 3 من حزمة الإصدارات العامة من نظام التشغيل Android 11 أو الإصدارات الأحدث مع أداة تجميد التطبيقات المخزّنة مؤقتًا. توقف هذه الميزة تنفيذ العمليات المخزَّنة مؤقتًا وتقلّل من استخدام الموارد من خلال التطبيقات التي تسوء سلوكها والتي قد تحاول العمل أثناء التخزين المؤقت. يجمّد إطار العمل التطبيقات المخزّنة مؤقتًا من خلال نقل عملياتها إلى مجموعة تحكّم (cgroup) مجمّدة، ما يقلّل من استهلاك وحدة المعالجة المركزية (CPU) النشط وغير النشط في حال توفّر تطبيقات نشطة مخزّنة مؤقتًا. يمكن تفعيل ميزة "تجميد التطبيقات" باستخدام علامة إعدادات النظام أو أحد خيارات المطوّرين.
تنفيذ ميزة "تجميد التطبيقات"
تستفيد أداة تجميد التطبيقات المخزّنة مؤقتًا من أداة التجميد cgroup v2 في النواة. يمكن للأجهزة التي تتضمّن نواة متوافقة تفعيل هذه الميزة (اختياريًا). لإجراء ذلك، فعِّل خيار المطوّر "تعليق التنفيذ للتطبيقات المخزّنة مؤقتًا" أو اضبط علامة إعداد الجهاز activity_manager_native_boot use_freezer
على true
. مثلاً:
adb shell device_config put activity_manager_native_boot use_freezer true && adb reboot
يتم إيقاف المجمد عندما يتم ضبط العلامة use_freezer
على "خطأ" أو عندما يكون خيار المطوّر غير مفعّل. يمكنك تفعيل هذا الإعداد أو إيقافه من خلال تغيير إعدادات الجهاز في إصدار برنامج أو تحديث.
لا يوفّر مجمد التطبيقات واجهات برمجة تطبيقات رسمية (ولا يتضمّن عميلاً مرجعيًا للتنفيذ)، ولكنه يستخدم واجهات برمجة تطبيقات النظام المخفية setProcessFrozen
وenableFreezer
. للحصول على تفاصيل حول واجهات برمجة التطبيقات هذه، يُرجى الرجوع إلى Process.java
في ActivityManager وواجهة برمجة التطبيقات ActivityManagerService. يمكن للمطوّرين أيضًا الرجوع إلى رمز العميل في ActivityManager
لإجراء التجارب.
التعامل مع الميزات المخصّصة
وعادةً، لا يُتوقّع أن تنفّذ العمليات أي مهام عند تخزينها مؤقتًا، ولكن قد تتضمّن بعض التطبيقات ميزات مخصّصة تستند إلى عمليات يُتوقّع أن يتم تشغيلها أثناء التخزين المؤقت. عند تفعيل ميزة "تجميد التطبيقات" على جهاز يشغّل أحد هذه التطبيقات، يتم تجميد العمليات المخزّنة مؤقتًا وقد يؤدي ذلك إلى منع عمل الميزات المخصّصة.
كحلّ بديل، إذا كان أحد التطبيقات يتضمّن عملية تحتاج إلى تنفيذ أنشطة أثناء التخزين المؤقت، غيِّر حالة العملية إلى غير مخزّنة مؤقتًا (مثل خدمة Bound ForeGround Service (BFGS) أو المقدّمة) قبل أن تحتاج العملية إلى تنفيذ أي عمل للسماح للتطبيق بالبقاء نشطًا.
اختبار ميزة "تجميد التطبيقات"
للتأكّد من أنّ ميزة "تجميد التطبيقات" تعمل على النحو المنشود، استخدِم المراجع التالية:
ابحث عن قائمة بالعمليات المتوقفة باستخدام الأمر
adb shell dumpsys activity
وابحث عنApps frozen:
.تحقَّق من وجود الملف
/sys/fs/cgroup/uid_0/cgroup.freeze
.عرض logcat الذي يعرض الإدخالات المجمّدة وغير المجمّدة في كل مرة يتم فيها نقل عملية إلى داخل أو خارج المجمّد مثلاً:
adb logcat | grep -i "\(freezing\|froze\)"