يتوافق نظام التشغيل Android 11 QPR3 أو الإصدارات الأحدث مع أداة "تجميد التطبيقات" التي تستخدم ذاكرة التخزين المؤقت. تعمل هذه الميزة على إيقاف تنفيذ العمليات المخزَّنة مؤقتًا وتقليل استخدام موارد التطبيقات التي تُظهر سلوكًا غير مرغوب فيه والتي قد تحاول العمل أثناء الاحتفاظ بها في ذاكرة التخزين المؤقت. يُجمِّد الإطار التطبيقات المخزّنة مؤقتًا عن طريق نقل عملياتها إلى مجموعة 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
وgrep للبحث عنApps frozen:
.تحقّق من توفّر ملف
/sys/fs/cgroup/uid_0/cgroup.freeze
.يمكنك عرض logcat الذي يعرض الإدخالات المجمّدة وغير المجمّدة في كل مرة تتم فيها نقل عملية إلى أو من "المجمّر". مثلاً:
adb logcat | grep -i "\(freezing\|froze\)"