कैश्ड ऐप्स फ्रीजर

Android 11 QPR3 या उच्चतर कैश्ड ऐप्स फ़्रीज़र का समर्थन करता है। यह सुविधा कैश्ड प्रक्रियाओं के निष्पादन को रोक देती है और दुर्व्यवहार करने वाले ऐप्स द्वारा संसाधन उपयोग को कम कर देती है जो कैश्ड रहते हुए काम करने का प्रयास कर सकते हैं। फ्रेमवर्क कैश्ड ऐप्स की प्रक्रियाओं को फ्रोजन सीग्रुप में स्थानांतरित करके उन्हें फ्रीज कर देता है; यह सक्रिय कैश्ड ऐप्स की उपस्थिति में सक्रिय और निष्क्रिय सीपीयू खपत को कम करता है। ऐप फ़्रीज़र को सिस्टम कॉन्फ़िगरेशन फ़्लैग या डेवलपर विकल्प का उपयोग करके सक्षम किया जा सकता है।

ऐप्स फ्रीजर लागू करें

कैश्ड ऐप्स फ़्रीज़र कर्नेल 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 ग़लत पर सेट किया जाता है या डेवलपर विकल्प अक्षम किया जाता है, तो फ़्रीज़र अक्षम हो जाता है। आप सॉफ़्टवेयर रिलीज़ या अपडेट में डिवाइस कॉन्फ़िगरेशन को बदलकर इस सेटिंग को टॉगल कर सकते हैं।

ऐप्स फ़्रीज़र आधिकारिक API को उजागर नहीं करता है (और इसमें कोई संदर्भ कार्यान्वयन क्लाइंट नहीं है), लेकिन छिपे हुए सिस्टम API setProcessFrozen और enableFreezer का उपयोग करता है। इन एपीआई पर विवरण के लिए, एक्टिविटीमैनेजर की Process.java और एक्टिविटीमैनेजरसर्विस एपीआई देखें। डेवलपर्स प्रयोगों के लिए ActivityManager में क्लाइंट कोड का भी उल्लेख कर सकते हैं।

कस्टम सुविधाओं को संभालें

आमतौर पर, कैश्ड होने पर प्रक्रियाओं से कोई काम करने की उम्मीद नहीं की जाती है, लेकिन कुछ ऐप्स में प्रक्रियाओं द्वारा समर्थित कस्टम सुविधाएँ हो सकती हैं जिनके कैश्ड होने पर चलने की उम्मीद होती है। जब ऐसे ऐप चलाने वाले डिवाइस पर ऐप फ़्रीज़र सक्षम होता है, तो कैश्ड प्रक्रियाएं फ़्रीज़ हो जाती हैं और कस्टम सुविधाओं को काम करने से रोक सकती हैं।

वर्कअराउंड के रूप में, यदि किसी ऐप में ऐसी प्रक्रिया है जिसे कैश्ड रहते हुए गतिविधियां करने की आवश्यकता है, तो ऐप को अनुमति देने के लिए प्रक्रिया को कोई भी काम करने से पहले प्रक्रिया की स्थिति को गैर-कैश्ड (जैसे बाउंड फोरग्राउंड सर्विस (बीएफजीएस) या फोरग्राउंड) में बदल दें। सक्रिय रहना.

ऐप्स फ्रीजर का परीक्षण करें

यह सत्यापित करने के लिए कि ऐप फ़्रीज़र इच्छानुसार काम कर रहा है, निम्नलिखित संसाधनों का उपयोग करें:

  • adb shell dumpsys activity कमांड का उपयोग करके फ्रोजन प्रक्रियाओं की सूची की जांच करें और Frozen कीवर्ड को ग्रेप करें।

  • /sys/fs/cgroup/uid_0/cgroup.freeze फ़ाइल की उपस्थिति की जाँच करें।

  • लॉगकैट देखें, जो हर बार किसी प्रक्रिया के फ़्रीज़र के अंदर या बाहर माइग्रेट होने पर फ्रोज़न और अनफ़्रोज़ेन प्रविष्टियाँ दिखाता है। उदाहरण के लिए:

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