ऐप हाइबरनेशन

एक औसत एंड्रॉइड उपयोगकर्ता अपने डिवाइस पर 50+ ऐप्स इंस्टॉल करता है (डिवाइस का रैम स्तर बढ़ने के साथ यह संख्या बढ़ती है)। हालाँकि, इनमें से बड़ी संख्या में ऐप्स लंबे समय तक उपयोगकर्ता द्वारा अप्रयुक्त रह जाते हैं।

ऐप हाइबरनेशन उन ऐप्स को हाइबरनेट कर देता है जिनका उपयोगकर्ता कुछ महीनों तक उपयोग नहीं करता है, अनुमति स्वतः-निरसन के समान। यह ऐप को बलपूर्वक बंद कर देता है और इसे ऐसी स्थिति में डाल देता है जहां हम प्रदर्शन के बजाय भंडारण के लिए अनुकूलन करते हैं। अनुमति स्वत: निरस्तीकरण भी इस स्थिति के साथ बंडल किया गया है और वे सेटिंग्स में समान छूट सेटिंग साझा करते हैं। बलपूर्वक रोका गया ऐप पृष्ठभूमि में नौकरियां या अलर्ट नहीं चलाता है और पुश सूचनाएं भेजने में सक्षम नहीं है। जब उपयोगकर्ता ऐप का दोबारा उपयोग करता है, तो ऐप हाइबरनेशन से बाहर निकल जाता है और नौकरियां/अलर्ट/नोटिफ़िकेशन सामान्य रूप से फिर से चलने लगते हैं। ऐप के हाइबरनेशन में जाने से पहले शेड्यूल किए गए किसी भी कार्य/अलर्ट/नोटिफिकेशन को फिर से शेड्यूल करने की आवश्यकता है।

प्लेटफ़ॉर्म को संशोधित करने वाले OEM ऐप हाइबरनेशन कार्यान्वयन के साथ विरोध कर सकते हैं। उदाहरण के लिए

  • ऐप उपयोग की परिभाषा को संशोधित करना या ऐसे ऐप को सक्रिय करने के तरीके पेश करना जो एओएसपी में नहीं हैं, ऐप हाइबरनेशन की सटीकता को बाधित कर सकते हैं
  • ऐप हाइबरनेशन के समान एक ओईएम का मालिकाना प्रतिबंध तंत्र एक समान उद्देश्य पूरा कर सकता है। हालाँकि दोनों मौजूद हो सकते हैं, कुछ ओवरलैप भी हो सकते हैं।

सीडीडी मौजूदा 3.5.1 आवश्यकता के समान, ऐप के उपयोग पर आधारित परिवर्तनों के लिए आवश्यकताओं के एक नए सेट की रूपरेखा तैयार करता है। ऐप हाइबरनेशन इन आवश्यकताओं का पालन करता है।

फ्रेमवर्क कोड इसमें रहता है:

नीति तर्क इसमें रहता है:

  • रेपो: प्लेटफ़ॉर्म/पैकेज/मॉड्यूल/अनुमति
  • निर्देशिका: PermissionController/src/com/android/permissioncontroller/hibernation

उच्च स्तरीय वास्तुकला

ऐप हाइबरनेशन सिस्टम सेवा उपयोगकर्ता द्वारा स्टोरेज के लिए कम उपयोग किए जाने वाले ऐप्स को अनुकूलित करती है और उन ऐप्स को पृष्ठभूमि में चलने से रोकती है। इन परिणामों को प्राप्त करने के लिए, जब हम किसी ऐप को हाइबरनेट करते हैं, तो हम विशेष रूप से:

  • अनुमतियाँ स्वतः निरस्त करें
  • ऐप को फोर्स-स्टॉप करें
  • ODEX और VDEX फ़ाइलें हटाएँ
  • ऐप कैश हटाएं

हमारा लक्ष्य हाइबरनेशन को एक प्रतिवर्ती कार्रवाई के रूप में लागू करना है ताकि ऐप अभी भी लॉन्चर और अन्य सतहों के माध्यम से उपयोगकर्ता के लिए ऐप डेटा के साथ उपलब्ध रहे। ऐप लॉन्च करने पर, हम इसे फ़ोर्स-स्टॉप स्थिति से वापस पुनर्स्थापित करेंगे और हमेशा की तरह ODEX और VDEX फ़ाइल निर्माण जारी रखेंगे।

नियोजित डिज़ाइन दो मुख्य भागों पर केंद्रित है:

  • यह निर्धारित करना कि किसी पैकेज को कब हाइबरनेट करना चाहिए
  • हाइबरनेटिंग पैकेज का अनुकूलन

PermissionController में एक नई सिस्टम सेवा, AppHibernationService , और एक नौकरी सेवा, AppHibernationJobService, वह गोंद है जो समग्र निर्णय लेने और तर्क को नियंत्रित करती है।

यह निर्धारित करना कि किसी पैकेज को कब हाइबरनेट करना चाहिए, मुख्य रूप से UsageStatsService द्वारा संचालित होता है और PermissionController में AppHibernationJobService द्वारा प्रबंधित किया जाता है। यह नीति तर्क हमें मेनलाइन के माध्यम से गतिशील रूप से अपडेट करने की अनुमति देने के लिए PermissionController में रहता है। इसके अलावा, हम UsageStatsService में एक नए मीट्रिक के रूप में पैकेज के घटकों (उदाहरण के लिए, सेवाओं, सामग्री प्रदाताओं) के उपयोग को कैप्चर करने के लिए एक नया सिग्नल, घटक उपयोग जोड़ने की योजना बना रहे हैं।

किसी पैकेज को अनुकूलित करना वह जगह है जहां सभी वास्तविक बचत/अनुकूलन होते हैं। AppHibernationService पैकेज को रोकने, कैश डेटा को हटाने, ART कलाकृतियों को हटाने आदि के लिए सिस्टम के विभिन्न भागों के साथ संचार करता है। एंड्रॉइड 11 और उससे नीचे के उपकरणों पर ऑटो-रिवोक कार्यक्षमता को बनाए रखने के लिए अनुमति निरस्तीकरण सीधे AppHibernationJobService से शुरू किया जाता है।

प्रयोगकर्ता का अनुभव

उपयोगकर्ता को जानकारी और नियंत्रण दोनों प्रदान किए जाते हैं कि कौन से ऐप्स को हाइबरनेट किया जा सकता है।

ऑटो-रिवोक के समान, उपयोगकर्ता को एक अधिसूचना मिलती है कि कौन से ऐप्स हाइबरनेटेड हैं और उसके पास नोटिफिकेशन से सीधे सेटिंग्स में जाकर ऐप खोलने और इसे हाइबरनेशन से बाहर लाने या यदि आवश्यक हो तो अप्रयुक्त ऐप को हटाने का विकल्प होता है।

हम मौजूदा अनुमतियों को स्वत: रद्द करने की छूट के इरादे के माध्यम से उपयोगकर्ता से हाइबरनेशन से छूट मांगने के डेवलपर के इरादे का समर्थन करना जारी रखते हैं।

पश्च संगतता

एंड्रॉइड 12 से हाइबरनेशन-विशिष्ट सुविधाएं उपलब्ध हैं। ये सुविधा पुराने संस्करणों पर काम नहीं कर सकी क्योंकि प्लेटफ़ॉर्म घटक (जैसे नई सिस्टम सेवा) मौजूद नहीं हैं। ऑटो-रिवोक पहले के ओएस संस्करणों के लिए वर्तमान में लागू कार्य करना जारी रखता है।

एंड्रॉइड 12 शुरू करते समय, बैकवर्ड संगतता सुनिश्चित करने के लिए, अनुमति उप-मेनू के भीतर मूल ऑटो-रिवोक टॉगल को रखते हुए सेटिंग्स में ऐप्स और नोटिफिकेशन के तहत ऐप के पेज पर एक हाइबरनेशन टॉगल जोड़ा जाता है। यह टॉगल ऐप के लिए समग्र ऐप हाइबरनेशन सिस्टम छूट को नियंत्रित करता है।

अनुकूलित

चूंकि कुछ कार्यान्वयन मॉड्यूलर सिस्टम घटक का हिस्सा है, इसलिए साझेदारों को सुविधा को संशोधित करने से हतोत्साहित किया जाता है। जब तक भागीदार सीडीडी आवश्यकताओं का पालन करते हैं तब तक वे समान सुविधाएं/कार्यक्षमता लागू कर सकते हैं।

एंड्रॉइड 11 या इसके बाद के संस्करण को लक्षित करने वाले सभी ऐप्स के लिए ऐप हाइबरनेशन डिफ़ॉल्ट रूप से चालू होना चाहिए। यह अनुमतियाँ स्वतः-निरस्त करने के समान है। जबकि सेटिंग स्वयं चालू हो सकती है, ऐप हाइबरनेशन कार्यान्वयन एंड्रॉइड 11 बनाम एंड्रॉइड 12 को लक्षित करने वाले ऐप्स के बीच भिन्न हो सकता है। अधिक विशेष रूप से, ऐप हाइबरनेशन केवल एंड्रॉइड 11 को लक्षित करने वाले ऐप्स के लिए काम करता है जबकि यह अनिवार्य रूप से एंड्रॉइड 12 को लक्षित करने वाले ऐप्स के लिए ऑटो-रिवोक है।

इसके अतिरिक्त, ओईएम एक समान सुविधा लागू कर सकते हैं। हालाँकि, उन सुविधाओं को बैटरी अनुकूलन के लिए बहुत कम समय-सीमा पर लक्षित किया जाता है जो OEM विशिष्ट हो सकते हैं। ओईएम द्वारा विकसित कोई भी समान ऐप प्रतिबंध सुविधाएँ ऐप हाइबरनेशन सिस्टम के साथ तब तक सह-अस्तित्व में रह सकती हैं जब तक वे सीडीडी में परिभाषित मौजूदा मानदंडों को पूरा करते हैं।

परिक्षण

यह सुनिश्चित करने के लिए कि यह सही ढंग से काम कर रहा है, ऐप हाइबरनेशन में सीटीएस और यूनिट परीक्षण हैं।