Android 9 (एपीआई लेवल 28) में नई सुविधाएं जोड़ी गई हैं, ताकि डिवाइस पावर मैनेजमेंट को बेहतर बनाया जा सके. ये बदलावों, और उन सुविधाओं के साथ जो पिछले वर्शन में पहले से मौजूद थीं, मदद मिलती है. ताकि यह पक्का किया जा सके कि सिस्टम रिसॉर्स उन ऐप्लिकेशन को दिए जाएं जिन्हें उनकी सबसे ज़्यादा ज़रूरत है.
पावर मैनेजमेंट की सुविधाएं दो कैटगरी में आती हैं:
- ऐप्लिकेशन स्टैंडबाय बकेट
- सिस्टम, ऐप्लिकेशन की जैसे कि डिवाइस के संसाधनों का ऐक्सेस उपयोगकर्ता के इस्तेमाल के पैटर्न के हिसाब से, सीपीयू या बैटरी की जानकारी. यह इसके लिए एक नई सुविधा है Android 9.
- बैटरी सेवर में किए गए सुधार
- बैटरी सेवर चालू होने पर, सिस्टम, सभी ऐप्लिकेशन पर पाबंदियां लगाता है. यह एक मौजूदा सुविधा है, जिसे Android 9 में बेहतर बनाया गया.
ऐप्लिकेशन स्टैंडबाय बकेट
Android 9 में बैटरी मैनेजमेंट की नई सुविधा, ऐप्लिकेशन स्टैंडबाय बकेट की सुविधा लॉन्च की गई. ऐप्लिकेशन स्टैंडबाय बकेट, ऐप्लिकेशन को प्राथमिकता देने में सिस्टम की सहायता करती है संसाधनों के लिए अनुरोध ऐप्लिकेशन का इस्तेमाल कितनी बार और कितनी बार किया जाता है. ऐप्लिकेशन के इस्तेमाल के आधार पर पैटर्न के लिए, प्रत्येक ऐप्लिकेशन को पांच प्राथमिकता बकेट में से एक में रखा जाता है. सिस्टम यह तय करता है कि ऐप्लिकेशन किस बकेट के हिसाब से, हर ऐप्लिकेशन के लिए उपलब्ध डिवाइस के संसाधनों को सीमित करेगा शामिल है.
ये पांच बकेट हैं कि ये नीचे दी गई विशेषताओं के आधार पर, ऐप्लिकेशन को ग्रुप में प्राथमिकता देती हैं:
- चालू है
अगर उपयोगकर्ता इस समय ऐप्लिकेशन का इस्तेमाल कर रहा है, तो वह ऐक्टिव बकेट में है उदाहरण:
- ऐप्लिकेशन ने कोई गतिविधि लॉन्च की है
- इस ऐप्लिकेशन में फ़ोरग्राउंड सेवा का इस्तेमाल किया जा रहा है
- इस ऐप्लिकेशन में एक सिंक अडैप्टर है, जो कॉन्टेंट उपलब्ध कराने वाले ऐप्लिकेशन से जुड़ा है. इस अडैप्टर का इस्तेमाल फ़ोरग्राउंड ऐप्लिकेशन
- उपयोगकर्ता, ऐप्लिकेशन से मिली सूचना पर क्लिक करता है
अगर कोई ऐप्लिकेशन ऐक्टिव बकेट में है, तो सिस्टम उन पर कोई पाबंदी नहीं लगाता ऐप्लिकेशन के जॉब, अलार्म या FCM मैसेज के बारे में जानकारी.
- वर्किंग सेट
अगर कोई ऐप्लिकेशन अक्सर चलता है, लेकिन वह फ़िलहाल काम नहीं कर रहा, तो वह काम करने वाले सेट बकेट में होता है सक्रिय है. उदाहरण के लिए, उपयोगकर्ता जिस सोशल मीडिया ऐप्लिकेशन को ज़्यादातर दिनों में लॉन्च करता है वह के काम करने की जगह पर होने की संभावना है. ऐप्लिकेशन को काम करने के तरीके पर ले जाया जाता है बकेट में तब तक शामिल करें, जब तक कि उनका इस्तेमाल किसी दूसरे तरीके से नहीं किया जाता.
अगर कोई ऐप्लिकेशन अपने-आप काम करने वाले सेट में होता है, तो सिस्टम काम करने और अलार्म ट्रिगर करने की सुविधा. जानकारी के लिए, यह देखें पावर मैनेजमेंट की पाबंदियां.
- अक्सर
अगर कोई ऐप्लिकेशन नियमित रूप से इस्तेमाल किया जाता है, तो वह अक्सर बकेट में शामिल होता है, लेकिन ज़रूरी नहीं है कि मदद मिलती है. उदाहरण के लिए, कसरत को ट्रैक करने वाला ऐसा ऐप्लिकेशन जिसे उपयोगकर्ता जिम में चलाता है बार-बार आने वाले लोगों की संख्या में हो सकता है.
अगर कोई ऐप्लिकेशन बार-बार इस्तेमाल किए जाने वाले ऐप्लिकेशन की सूची में शामिल है, तो सिस्टम उस ऐप्लिकेशन पर सख्त पाबंदियां लागू करता है काम करने, अलार्म ट्रिगर करने, और सीमा लगाने की क्षमता ज़्यादा प्राथमिकता वाले FCM मैसेज चुने जा सकते हैं. जानकारी के लिए, यह देखें पावर मैनेजमेंट की पाबंदियां.
- काफ़ी कम बार
अगर किसी ऐप्लिकेशन का अक्सर इस्तेमाल नहीं किया जाता, तो वह खास बकेट में शामिल हो जाता है. उदाहरण के लिए, होटल ऐप्लिकेशन अगर कोई व्यक्ति होटल में रहते हुए ही दौड़ता है, तो ऐसी स्थिति में बकेट.
अगर कोई ऐप्लिकेशन खास बकेट में शामिल होता है, तो सिस्टम, उस ऐप्लिकेशन पर सख्त पाबंदियां लगाता है यह जॉब चलाने, अलार्म ट्रिगर करने, और ज़्यादा प्राथमिकता वाले FCM मैसेज पाने की सुविधा देता है. सिस्टम, ऐप्लिकेशन को इंटरनेट से कनेक्ट करने की क्षमता को भी सीमित करता है. इसके लिए ज़्यादा जानकारी के लिए, पावर मैनेजमेंट की पाबंदियां देखें.
- कभी नहीं
इंस्टॉल तो किए गए, लेकिन कभी नहीं चलने वाले ऐप्लिकेशन 'कभी नहीं' बकेट के तौर पर असाइन किए जाते हैं. सिस्टम इन ऐप्लिकेशन पर गंभीर पाबंदियां लागू करता है.
सिस्टम, डाइनैमिक तौर पर हर ऐप्लिकेशन को प्राथमिकता बकेट में असाइन करता है और किसी भी समय ऐप्लिकेशन का इस्तेमाल कर सकते हैं. सिस्टम, पहले से लोड किए गए ऐसे ऐप्लिकेशन पर भरोसा कर सकता है जो मशीन का इस्तेमाल करता है में से हर एक के लिए, ऐप्लिकेशन का इस्तेमाल करना है और यह सही बकेट के लिए ऐप्लिकेशन असाइन करता है. अगर सिस्टम ऐप किसी डिवाइस पर मौजूद नहीं है, सिस्टम डिफ़ॉल्ट रूप से ऐप को उनका इस्तेमाल कब किया गया. ऐसे बकेट में ज़्यादा ऐक्टिव ऐप्लिकेशन असाइन किए जाते हैं जो ऐप्लिकेशन को उच्च प्राथमिकता देते हैं, ताकि और सिस्टम संसाधन उपलब्ध हैं. खास तौर पर, बकेट यह तय करती है कि ऐप्लिकेशन के जॉब कितनी बार चलते हैं, ऐप्लिकेशन कितनी बार ट्रिगर हो सकता है अलार्म और ऐप्लिकेशन को कितनी बार ज़्यादा प्राथमिकता वाला Firebase Cloud मिल सकता है (FCM) मैसेज सेवा. ये पाबंदियां सिर्फ़ तब लागू होती हैं, जब डिवाइस बैटरी से चल रहा हो; सिस्टम डिवाइस के चार्ज होने के दौरान, ऐप्लिकेशन पर ये पाबंदियां नहीं लागू करती.
हर मैन्युफ़ैक्चरर यह तय कर सकता है कि ऐप्लिकेशन का इस्तेमाल न करने वाले ऐप्लिकेशन कितने ज़रूरी हैं
बकेट को असाइन किया जाता है. आपको यह कंट्रोल करने की कोशिश नहीं करनी चाहिए कि आपका ऐप्लिकेशन किस कैटगरी में है
इन्हें असाइन किया गया है. इसके बजाय, यह पक्का करने पर ध्यान दें कि आपका ऐप्लिकेशन हर स्थिति में अच्छा काम करे
बाल्टी आ सकती है. आपका ऐप्लिकेशन यह पता लगा सकता है कि वह फ़िलहाल किस बकेट में है
पुष्टि करने का नया तरीक़ा
UsageStatsManager.getAppStandbyBucket()
.
सबसे सही तरीके
अगर आपका ऐप्लिकेशन इन कामों के लिए पहले से ही सबसे सही तरीके अपना रहा है डोज़ और ऐप्लिकेशन स्टैंडबाय मोड, पावर मैनेजमेंट की नई सुविधाओं को इस्तेमाल करना मुश्किल नहीं होना चाहिए. हालांकि, ऐप्लिकेशन के कुछ काम करने के तरीके जो पहले कारगर थे, अब समस्याएं पैदा कर सकती हैं.
- अपने ऐप्लिकेशन को एक बकेट में रखने के लिए सिस्टम में हेर-फेर करने की कोशिश न करें या कोई दूसरा. सिस्टम के बकेटिंग के तरीके बदल सकते हैं और हर डिवाइस बकेटिंग ऐप्लिकेशन की मदद से, मैन्युफ़ैक्चरर खुद का बकेटिंग ऐप्लिकेशन लिख सकता है एल्गोरिदम. इसके बजाय, यह पक्का करें कि आपका ऐप्लिकेशन सही तरीके से काम करे, भले ही बाल्टी आ जाए.
- अगर किसी ऐप्लिकेशन में लॉन्चर गतिविधि नहीं है, तो हो सकता है कि उसे कभी भी ऐक्टिव बकेट. हो सकता है कि आप अपने ऐप्लिकेशन को फिर से डिज़ाइन करना चाहें, ताकि गतिविधि.
- अगर ऐप्लिकेशन की सूचनाओं पर कोई कार्रवाई नहीं की जा सकती, तो उपयोगकर्ता आपके ऐप्लिकेशन की सूचनाओं को सूचनाओं के साथ इंटरैक्ट करके, ऐक्टिव बकेट में ऐप्लिकेशन का प्रमोशन करने के लिए. तय सीमा में हैं, तो हो सकता है कि आप कुछ सही सूचनाओं को फिर से डिज़ाइन करना चाहें, ताकि वे उपयोगकर्ता का कोई जवाब मिला हो. कुछ दिशानिर्देशों के लिए, इसे देखें मटीरियल डिज़ाइन सूचनाओं का डिज़ाइन पैटर्न के बारे में ज़्यादा जानें.
इसी तरह, अगर ऐप्लिकेशन ज़्यादा प्राथमिकता वाला FCM मैसेज, यह उपयोगकर्ता को ऐप्लिकेशन के साथ इंटरैक्ट करने का मौका नहीं देगा और इस तरह से ऐक्टिव बकेट को चुनें. असल में, ज़्यादा प्राथमिकता वाले FCM मैसेज के लिए सिर्फ़ यही इस्तेमाल करना है उपयोगकर्ता को नोटिफ़िकेशन पुश करें, ताकि ऐसी स्थिति कभी न हो. अगर आपको किसी FCM मैसेज के ट्रिगर न होने पर, उसे गलत तरीके से 'ज़्यादा प्राथमिकता' के तौर पर मार्क करना उपयोगकर्ता इंटरैक्शन, इसके अन्य नकारात्मक परिणाम हो सकते हैं; उदाहरण के लिए, यह हो सकता है कि आपके ऐप्लिकेशन का कोटा खत्म हो जाए, जिससे ऐप्लिकेशन FCM मैसेज को सामान्य प्राथमिकता के तौर पर माना जाएगा.
ध्यान दें: अगर उपयोगकर्ता किसी सूचना को बार-बार खारिज करता है, तो सिस्टम से उपयोगकर्ता को भविष्य में उस नोटिफ़िकेशन को ब्लॉक करने का विकल्प मिलता है. अपने ऐप्लिकेशन को ऐक्टिव बकेट!
अगर ऐप्लिकेशन एक से ज़्यादा पैकेज में बंटे हुए हैं, तो वे पैकेज अलग-अलग बकेट हैं और इसलिए उनके ऐक्सेस लेवल भी अलग-अलग हैं. आपको यह काम ज़रूर करना चाहिए अलग-अलग बकेट को असाइन किए गए पैकेज के साथ ऐसे ऐप्लिकेशन की जांच करके पक्का करें कि ऐप ठीक से काम कर रहा है.
बैटरी सेवर में किए गए सुधार
Android 9 पर, बैटरी सेवर मोड को कई तरह से बेहतर बनाया गया है. डिवाइस बनाने वाली कंपनी, लगाई गई पाबंदियों को सटीक तरीके से तय करती है. उदाहरण के लिए, चालू AOSP बिल्ड बनाता है, तो सिस्टम इन पाबंदियों को लागू करता है:
- सिस्टम, ऐप्लिकेशन को स्टैंडबाय मोड में रखने के बजाय, ज़्यादा असरदार तरीके से काम करता है ऐप्लिकेशन के कुछ समय से इस्तेमाल में न होने पर.
- बैकग्राउंड में कोड एक्ज़ीक्यूट करने की सीमाएं सभी ऐप्लिकेशन पर लागू होती हैं, भले ही उनका टारगेट एपीआई कुछ भी हो स्तर.
- स्क्रीन बंद होने पर, जगह की जानकारी वाली सेवाएं बंद हो सकती हैं.
- बैकग्राउंड में चलने वाले ऐप्लिकेशन को नेटवर्क का ऐक्सेस नहीं मिलता.
इसके अलावा, डिवाइस के हिसाब से पावर ऑप्टिमाइज़ेशन के अन्य तरीके भी हैं. फ़ुल टाइम की जानकारी के साथ, पावर मैनेजमेंट के बारे में बताने वाला पेज देखें पाबंदियां तय की गई हैं.
हमेशा की तरह, बैटरी सेवर चालू रहने पर भी अपने ऐप्लिकेशन की जांच करना बेहतर होगा. आपने लोगों तक पहुंचाया मुफ़्त में डिवाइस के सेटिंग > बैटरी से जुड़े जोखिम सेवर स्क्रीन.
जांच और समस्या हल करना
पावर मैनेजमेंट की नई सुविधाओं का असर, Android 9 डिवाइसों पर चल रहे सभी ऐप्लिकेशन पर पड़ेगा. या नहीं, Android 9 को टारगेट करते हैं या नहीं. यह पक्का करना ज़रूरी है कि आपका ऐप्लिकेशन ठीक से काम करे ठीक से कर सकें.
अलग-अलग स्थितियों के तहत अपने ऐप्लिकेशन के इस्तेमाल के मुख्य उदाहरणों की जांच करके, पावर मैनेजमेंट की सुविधाएं एक-दूसरे के साथ कैसे काम करती हैं. इसके लिए, Android पर डीबग ब्रिज निर्देशों का पालन करें सुविधाएं चालू और बंद करें.
Android डीबग ब्रिज निर्देश
Android डीबग ब्रिज शेल कमांड का इस्तेमाल किया जा सकता है पावर मैनेजमेंट की कई सुविधाओं की जांच करनी है.
अपने डिवाइस को Doze में रखने के लिए ADB का इस्तेमाल करने के बारे में जानकारी के लिए, देखें डोज़ और ऐप स्टैंडबाय के साथ परीक्षण करना.
ऐप्लिकेशन स्टैंडबाय बकेट
अपने ऐप्लिकेशन को मैन्युअल तरीके से किसी ऐप्लिकेशन स्टैंडबाय बकेट पर असाइन करने के लिए, ADB का इस्तेमाल किया जा सकता है. किसी ऐप्लिकेशन का बकेट बदलने के लिए, इस कमांड का इस्तेमाल करें:
$ adb shell am set-standby-bucket packagename active|working_set|frequent|rare
इस निर्देश का इस्तेमाल एक साथ कई पैकेज सेट करने के लिए भी किया जा सकता है:
$ adb shell am set-standby-bucket package1 bucket1 package2 bucket2...
यह देखने के लिए कि कोई ऐप्लिकेशन किस बकेट में है, चलाएं
$ adb shell am get-standby-bucket [packagename]
अगर आप packagename पैरामीटर पास नहीं करते हैं, तो कमांड
बकेट में जोड़े जा सकते हैं. कोई ऐप्लिकेशन, रनटाइम के दौरान अपनी बकेट का पता लगाने के लिए कॉल कर सकता है
नया तरीका
UsageStatsManager.getAppStandbyBucket()
.
बैटरी सेवर
कम पावर की स्थितियों में आपका ऐप्लिकेशन कैसे काम करता है, यह जानने के लिए कई निर्देश हैं.
अनप्लग किए जा रहे डिवाइस को सिम्युलेट करने के लिए, निर्देश का इस्तेमाल करें
$ adb shell dumpsys battery unplug
यह देखने के लिए कि डिवाइस कम पावर वाली स्थितियों में कैसे काम करता है, इस निर्देश का इस्तेमाल करें:
$ adb shell settings put global low_power 1
जांच पूरी होने के बाद, डिवाइस की मैन्युअल सेटिंग को पहले जैसा किया जा सकता है इस आदेश के साथ:
$ adb shell dumpsys battery reset