تجميد التطبيقات المخزنة مؤقتًا

يدعم Android 11 QPR3 أو أعلى تجميد التطبيقات المخزنة مؤقتًا. تعمل هذه الميزة على إيقاف تنفيذ العمليات المخزنة مؤقتًا وتقليل استخدام الموارد عن طريق إساءة تشغيل التطبيقات التي قد تحاول العمل أثناء التخزين المؤقت. يقوم الإطار بتجميد التطبيقات المخزنة مؤقتًا عن طريق ترحيل عملياتها إلى مجموعة تحكم مجمدة؛ وهذا يقلل من استهلاك وحدة المعالجة المركزية النشطة والخمولة في ظل وجود تطبيقات نشطة مخزنة مؤقتًا. يمكن تمكين مُجمد التطبيق باستخدام علامة تكوين النظام أو خيار المطور.

تنفيذ تجميد التطبيقات

تعمل وحدة تجميد التطبيقات المخزنة مؤقتًا على تعزيز وحدة تجميد kernel 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 API. يمكن للمطورين أيضًا الرجوع إلى رمز العميل في ActivityManager لإجراء التجارب.

التعامل مع الميزات المخصصة

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

كحل بديل، إذا كان التطبيق يحتوي على عملية تحتاج إلى تنفيذ أنشطة أثناء التخزين المؤقت، فقم بتغيير حالة العملية إلى غير مخزنة مؤقتًا (مثل Bound ForeGround Service (BFGS) أو المقدمة) قبل أن تحتاج العملية إلى القيام بأي عمل للسماح للتطبيق لتبقى نشطة.

اختبار الثلاجة التطبيقات

للتحقق من أن مُجمد التطبيق يعمل على النحو المنشود، استخدم الموارد التالية:

  • تحقق من وجود قائمة بالعمليات المجمدة باستخدام أمر adb shell dumpsys activity ثم grep الكلمة الأساسية Frozen .

  • تحقق من وجود الملف /sys/fs/cgroup/uid_0/cgroup.freeze .

  • عرض logcat، الذي يعرض الإدخالات المجمدة وغير المجمدة في كل مرة يتم فيها ترحيل العملية داخل الثلاجة أو خارجها. على سبيل المثال:

    adb logcat | grep -i "\(freezing\|froze\)"