Android में बैटरी सेव करने वाली दो सुविधाएं हैं. इनका इस्तेमाल करने पर, बैटरी लाइफ़ बढ़ जाती है यह मैनेज करना कि डिवाइस के पावर सोर्स से कनेक्ट न होने पर ऐप्लिकेशन कैसे काम करें: Doze और ऐप्लिकेशन स्टैंडबाय भी है. डोज़ टालने की वजह से बैटरी की खपत कम होती है डिवाइस के लंबे समय तक इस्तेमाल न होने पर, ऐप्लिकेशन के लिए बैकग्राउंड सीपीयू और नेटवर्क गतिविधि समयावधि. ऐप्लिकेशन स्टैंडबाय, इनके लिए बैकग्राउंड नेटवर्क गतिविधि को रोकता है ऐसे ऐप्लिकेशन जिनमें हाल ही में कोई उपयोगकर्ता गतिविधि नहीं हुई है.
जब डिवाइस Doze में होता है, तब ऐप्लिकेशन का बैटरी से चलने वाली कुछ सुविधाएं रखरखाव विंडो तक संसाधन टाल दिए जाते हैं. खास पाबंदियां में सूचीबद्ध हैं पावर मैनेजमेंट पाबंदियां तय की गई हैं.
Doze और ऐप्लिकेशन स्टैंडबाय मोड, Android 6.0 पर चल रहे सभी ऐप्लिकेशन के व्यवहार को मैनेज करते हैं एपीआई लेवल 23 को टारगेट कर रहा है या नहीं, इससे कोई फ़र्क़ नहीं पड़ता. उपयोगकर्ताओं को बेहतरीन अनुभव देने के लिए, Doze और ऐप्लिकेशन में अपने ऐप्लिकेशन की जांच करें स्टैंडबाय मोड का इस्तेमाल करें और अपने कोड में ज़रूरी बदलाव करें. नीचे दिए गए सेक्शन में जानकारी होती है.
Doze के बारे में जानकारी
अगर कोई उपयोगकर्ता कुछ समय के लिए अपने डिवाइस को अनप्लग करके छोड़ देता है, तो वह स्क्रीन बंद होने पर, डिवाइस बैटरी बचाएं (डोज़) मोड में चला जाता है. बैटरी बचाएं (डोज़) मोड में, सिस्टम कोशिश करता है ऐप को प्रतिबंधित करके बैटरी बचाने के लिए' नेटवर्क और सीपीयू-इंटेंसिव सिस्टम का ऐक्सेस सेवाओं. यह ऐप्लिकेशन को नेटवर्क ऐक्सेस करने से भी रोकता है और जॉब, सिंक, और स्टैंडर्ड अलार्म.
समय-समय पर, सिस्टम कुछ समय के लिए Doze को बाहर निकालता है, ताकि ऐप्लिकेशन पूरा हो सकें स्थगित की गई गतिविधियाँ. रखरखाव की इस अवधि के दौरान, सिस्टम सभी बचे हुए सिंक, जॉब, और अलार्म को चलाता है. साथ ही, ऐप्लिकेशन को नेटवर्क ऐक्सेस करने की सुविधा देता है.
![](https://developer.android.com/static/images/training/doze.png?authuser=8&hl=hi)
जब रखरखाव विंडो खत्म हो जाती है, तो सिस्टम फिर से Doze में चला जाता है, नेटवर्क ऐक्सेस करने और काम टालने, सिंक करने, और अलार्म को निलंबित करने का है. समय के साथ, सिस्टम, रखरखाव वाली विंडो को कम बार शेड्यूल करता है. इससे बैटरी कम खर्च होती है लंबे समय तक कोई गतिविधि न होने पर, डिवाइस के चार्ज न होने पर भी फ़ोन का इस्तेमाल किया जा सकता है.
जब उपयोगकर्ता डिवाइस को घुमाकर, स्क्रीन चालू करें या चार्जर को कनेक्ट करने पर, सिस्टम Doze से बाहर निकल जाता है और सभी ऐप्लिकेशन सामान्य तरीके से काम करना शुरू कर देते हैं गतिविधि.
बैटरी बचाएं
Doze में रहते समय सिस्टम आपके ऐप्स पर निम्न प्रतिबंध लागू करता है:
- इससे नेटवर्क का ऐक्सेस निलंबित हो जाता है.
- जागने का ध्यान नहीं रखता लॉक के बीच के निशान का इस्तेमाल करें.
- डिफ़र्स स्टैंडर्ड
AlarmManager
अलार्म, जिनमें ये शामिल हैंsetExact()
औरsetWindow()
, पर जाएं.- अगर आपको Doze में रहते हुए आग लगने वाले अलार्म सेट करने हैं, तो इनका इस्तेमाल करें
setAndAllowWhileIdle()
याsetExactAndAllowWhileIdle()
. - इसके साथ सेट किए गए अलार्म
setAlarmClock()
सामान्य तरीके से आग लगाना जारी रखें. सिस्टम उन स्थितियों से कुछ समय पहले Doze को बंद कर देता है अलार्म फ़ायर होते हैं.
- अगर आपको Doze में रहते हुए आग लगने वाले अलार्म सेट करने हैं, तो इनका इस्तेमाल करें
- वाई-फ़ाई स्कैन नहीं किया जाता.
- इससे अडैप्टर सिंक नहीं होते.
- नहीं जाने देता
JobScheduler
दौड़ना.
बैटरी बचाएं (डोज़) की चेकलिस्ट
- अगर हो सके, तो डाउनस्ट्रीम के लिए Firebase क्लाउड से मैसेज (FCM)) का इस्तेमाल करें मैसेज सेवा.
- अगर आपके उपयोगकर्ताओं को तुरंत सूचना दिखनी चाहिए, तो FCM ज़्यादा प्राथमिकता वाला मैसेज. सिर्फ़ उन मैसेज के लिए ज़्यादा प्राथमिकता का इस्तेमाल करें जिनसे नतीजे मिले की सूचना मिलती है. ज़्यादा जानकारी के लिए, इसे देखें FCM की Android के लिए, मैसेज की प्राथमिकता से जुड़े दस्तावेज़.
- शुरुआती मैसेज में ज़रूरी जानकारी दें पेलोड है, इसलिए बाद में नेटवर्क ऐक्सेस करने की ज़रूरत नहीं होती.
setAndAllowWhileIdle()
के साथ ज़रूरी अलार्म सेट करें औरsetExactAndAllowWhileIdle()
.- Doze में अपने ऐप्लिकेशन की जांच करें.
अपने ऐप्लिकेशन को बैटरी बचाएं
Doze ऐप्लिकेशन पर अलग-अलग तरह से असर पड़ सकता है. यह इस बात पर निर्भर करता है कि ऐप्लिकेशन पर किस तरह के काम किए जा सकते हैं इस्तेमाल किया जा सकता है. कई ऐप बैटरी की पूरी अवधि के दौरान सामान्य रूप से काम करते हैं वह भी बिना किसी बदलाव के. कुछ मामलों में, आपको अपने ऐप्लिकेशन को इस्तेमाल करने का तरीका ऑप्टिमाइज़ करना होगा नेटवर्क, अलार्म, जॉब, और सिंक को मैनेज करता है. ऐप्लिकेशन के लिए यह ज़रूरी है कि वे रखरखाव की हर विंडो के दौरान गतिविधियों को मैनेज किया जा सकता है.
अलार्म शेड्यूल करने में मदद करने के लिए, दो AlarmManager
इस्तेमाल किए जा सकते हैं
तरीके: setAndAllowWhileIdle()
और
setExactAndAllowWhileIdle()
. इन तरीकों से, अलार्म सेट किए जा सकते हैं
जो बैटरी में होने पर भी आग लग जाती है.
नेटवर्क ऐक्सेस पर Doze की पाबंदी से आपके ऐप्लिकेशन पर भी असर पड़ सकता है, खास तौर पर तब, जब ऐप्लिकेशन रीयल-टाइम मैसेज पर निर्भर करता हो. जैसे, गुदगुदी या नोटिफ़िकेशन. अगर आपके ऐप्लिकेशन को नेटवर्क से लगातार जुड़े रहने की ज़रूरत है, तो मैसेज पाने के लिए, Firebase क्लाउड से मैसेज (FCM) का इस्तेमाल करें, अगर किया जा सकता है.
यह पुष्टि करने के लिए कि आपका ऐप्लिकेशन Doze के साथ उम्मीद के मुताबिक काम कर रहा है, आपके पास
adb
निर्देश, सिस्टम को Doze में जाने और उससे बाहर निकलने के लिए ज़बरदस्ती करते हैं
ऐप्लिकेशन के व्यवहार की निगरानी करें. जानकारी के लिए, यह देखें
डोज़ और ऐप स्टैंडबाय के साथ परीक्षण करें.
ऐप्लिकेशन स्टैंडबाय को समझना
ऐप स्टैंडबाय की मदद से, सिस्टम यह पता लगा पाता है कि कोई ऐप्लिकेशन इस्तेमाल का समय न कर पाने पर उपयोगकर्ता उसका इस्तेमाल न कर रहा हो उसका सक्रिय रूप से उपयोग कर रहा है. सिस्टम यह पता तब लगाता है, जब उपयोगकर्ता बस कुछ समय तक ऐप को छुएं और इनमें से कोई भी स्थिति न चुनें लागू होता है:
- उपयोगकर्ता साफ़ तौर पर ऐप्लिकेशन को लॉन्च करता हो.
- फ़िलहाल, ऐप्लिकेशन की प्रोसेस फ़ोरग्राउंड में है. इसे गतिविधि के तौर पर दिखाया जा सकता है या फ़ोरग्राउंड सेवा से जुड़ा हो या किसी दूसरी गतिविधि या फ़ोरग्राउंड सेवा के लिए इस्तेमाल किया जा रहा हो.
- ऐप्लिकेशन एक सूचना जनरेट करता है. यह सूचना, लोगों को लॉक स्क्रीन पर या स्क्रीन पर दिखती है सूचना ट्रे दिखाई देगी.
जब उपयोगकर्ता डिवाइस को पावर सप्लाई में प्लग करता है, तो सिस्टम ऐप्लिकेशन रिलीज़ कर देता है स्टैंडबाय मोड से, उन्हें बिना किसी रुकावट के नेटवर्क ऐक्सेस करने और किसी बचे हुए जॉब और सिंक. अगर डिवाइस लंबे समय तक इस्तेमाल में नहीं है, तो सिस्टम, कुछ समय से इस्तेमाल में न रहने वाले ऐप्लिकेशन को दिन में एक बार नेटवर्क ऐक्सेस करने की अनुमति देता है.
डिवाइस का कुछ समय तक इस्तेमाल न किए जाने पर, अपने ऐप्लिकेशन से इंटरैक्ट करने के लिए FCM का इस्तेमाल करें
Firebase क्लाउड मैसेज सेवा (FCM) एक क्लाउड-टू-डिवाइस सेवा है, जो आपको रीयल-टाइम में सहायता करने की सुविधा देती है Android डिवाइसों पर, बैकएंड सेवाओं और ऐप्लिकेशन के बीच डाउनस्ट्रीम मैसेज की सुविधा. FCM क्लाउड से एक स्थायी कनेक्शन उपलब्ध कराता है. सभी ऐप्लिकेशन की ज़रूरत है रीयल-टाइम में मैसेज भेजने की सुविधा, इस कनेक्शन को शेयर कर सकती है. शेयर किया गया यह कनेक्शन बैटरी के इस्तेमाल को बहुत अच्छे तरीके से ऑप्टिमाइज़ करता है, ताकि बैटरी के इस्तेमाल को अलग-अलग स्थायी कनेक्शन को बनाए रखने के लिए, कई ऐप्लिकेशन का इस्तेमाल किया जाता है. इससे बैटरी को तेज़ी से हटाएं. इस वजह से, अगर आपके ऐप्लिकेशन को मैसेज सेवा की ज़रूरत है तो हम आपको FCM का इस्तेमाल करने का सुझाव देते हैं, अगर मेहनत कर सकते हैं.
FCM को बैटरी बचाएं और ऐप स्टैंडबाय मोड के साथ काम करने के लिए ऑप्टिमाइज़ किया गया है. FCM 'ज़्यादा' प्राथमिकता वाले मैसेज का इस्तेमाल करके, अपने ऐप्लिकेशन को उपयोगकर्ता की दिलचस्पी बढ़ाने के लिए चालू किया जा सकता है. बैटरी बचाएं या ऐप्लिकेशन में स्टैंडबाय मोड में, सिस्टम मैसेज डिलीवर करता है और ऐप्लिकेशन को कुछ समय के लिए ऐक्सेस देता है और पार्शियल वेकलॉक का इस्तेमाल करता है. इसके बाद, डिवाइस या ऐप्लिकेशन को डिवाइस कुछ समय से इस्तेमाल में नहीं है. समय के हिसाब से संवेदनशील और उपयोगकर्ता को दिखाई देने वाली सूचनाओं के लिए, हाई क्वालिटी का इस्तेमाल करें प्राथमिकता वाले मैसेज भेजे जा सकते हैं. ज़्यादा प्राथमिकता वाले मैसेज ये कर सकते हैं नतीजे में सूचनाएँ पाएँ. यहां जाएं: FCM की ज़्यादा जानकारी के लिए ज़्यादा प्राथमिकता वाले मैसेज के लिए दिशा-निर्देश देखें.
ऐसे मैसेज जिनके लिए सूचनाएं नहीं मिलती हैं. जैसे, ऐप्लिकेशन का कॉन्टेंट बनाए रखना बैकग्राउंड में अप-टू-डेट होना चाहिए या डेटा सिंक करना शुरू करना है, तो सामान्य प्राथमिकता FCM का इस्तेमाल करें मैसेज. अगर डिवाइस नहीं है, तो सामान्य प्राथमिकता वाले मैसेज तुरंत डिलीवर कर दिए जाते हैं बैटरी बचाएं. अगर डिवाइस डोज़ मोड में है, तो उसे समय-समय पर डिलीवर किया जाता है रखरखाव विंडो का इस्तेमाल करें या उपयोगकर्ता के डिवाइस को अनलॉक करते ही ऐसा करें.
सबसे सही तरीका यह है कि अगर आपके ऐप्लिकेशन को डाउनस्ट्रीम मैसेज सेवा की ज़रूरत हो, तो FCM. अगर आपके ऐप्लिकेशन में पहले से ही FCM का इस्तेमाल किया जा रहा है, तो पक्का करें कि वह ज़्यादा प्राथमिकता वाले मैसेज का इस्तेमाल करता हो सिर्फ़ उन मैसेज के लिए है जिनकी वजह से उपयोगकर्ता को सूचनाएं मिलती हैं.
इस्तेमाल के अन्य उदाहरणों के लिए सहायता
नेटवर्क कनेक्टिविटी को मैनेज करके, तकरीबन सभी ऐप्लिकेशन, Doze का इस्तेमाल कर सकते हैं. अलार्म, जॉब, और सिंक करने के साथ-साथ, FCM मैसेज का इस्तेमाल करके भी सूचना दी जा सकती है. सीमित इस्तेमाल के लिए मामलों में यह ज़रूरत न हो. ऐसे मामलों में, सिस्टम कॉन्फ़िगर की जा सकने वाली ऐसी ऐप्लिकेशन की सूची जिन्हें बैटरी सेवर और ऐप्लिकेशन स्टैंडबाय से कुछ हद तक छूट मिली है ऑप्टिमाइज़ेशन.
जिस ऐप्लिकेशन को कुछ हद तक छूट मिली है वह नेटवर्क का इस्तेमाल कर सकता है और पार्शियल वेक मोड को होल्ड कर सकता है
लॉक के लॉक जाते हैं. हालांकि, अन्य पाबंदियां अब भी लागू होंगी
उसी तरह, जैसे अन्य ऐप्लिकेशन के मामले में होता है. उदाहरण के लिए, ऐप्लिकेशन के जॉब और सिंक
एपीआई लेवल 23 और उससे पहले के लेवल पर टाला जाता है और यह
AlarmManager
अलार्म नहीं बजेगा. ऐप्लिकेशन यह देख सकता है कि वह
फ़िलहाल, छूट पाने के लिए कॉल करके
isIgnoringBatteryOptimizations()
.
उपयोगकर्ता सेटिंग में जाकर, छूट वाले ऐप्लिकेशन की सूची को मैन्युअल तरीके से कॉन्फ़िगर कर सकते हैं > बैटरी > बैटरी ऑप्टिमाइज़ेशन. वैकल्पिक रूप से, सिस्टम ऐप्लिकेशन के लिए ऐसे तरीके उपलब्ध कराए जाते हैं जिनसे वे लोगों से छूट देने के लिए कह सकें:
- ज़्यादातर ऐप्लिकेशन ऐसे इंटेंट का इस्तेमाल कर सकते हैं जिसमें
ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS
. - ऐसे ऐप्लिकेशन जो इस्तेमाल के उचित उदाहरण को पूरा करते हैं
उसके बजाय ऐसे इंटेंट का अनुरोध कर सकता है जिसमें
ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS
इंटेंट कार्रवाई के ज़रिए, उपयोगकर्ता को ऐप्लिकेशन को सीधे तौर पर छूट वाली सूची में जोड़ने की अनुमति दें, वह भी इस सूची में मौजूद है.
कोई ऐप्लिकेशन कॉल करके यह देख सकता है कि वह छूट वाली सूची में है या नहीं
isIgnoringBatteryOptimizations()
.
बैटरी बचाएं और ऐप स्टैंडबाय के साथ जांच करें
अपने उपयोगकर्ताओं को शानदार अनुभव देने के लिए, Doze में अपने ऐप्लिकेशन की पूरी जांच करें और ऐप्लिकेशन स्टैंडबाय भी है.
Doze की मदद से अपने ऐप्लिकेशन की जांच करें
आप निम्न करके डोज़ मोड का परीक्षण कर सकते हैं:
- Android 6.0 (एपीआई) वाले हार्डवेयर डिवाइस या वर्चुअल डिवाइस को कॉन्फ़िगर करना लेवल 23) या उससे ऊपर के सिस्टम की इमेज होनी चाहिए.
- डिवाइस को अपनी डेवलपमेंट मशीन से कनेक्ट करें और अपना ऐप्लिकेशन इंस्टॉल करें.
- अपना ऐप्लिकेशन चलाएं और उसे चालू रहने दें.
- निम्न आदेश चलाकर सिस्टम को निष्क्रिय मोड में बलपूर्वक लागू करें:
$ adb shell dumpsys deviceidle force-idle
- जब आप तैयार हों, तो यह निर्देश देकर, डिवाइस को कुछ समय तक इस्तेमाल न करने वाले मोड से बाहर निकलें:
$ adb shell dumpsys deviceidle unforce
- यह निर्देश देकर डिवाइस को फिर से चालू करें:
$ adb shell dumpsys battery reset
- डिवाइस को फिर से चालू करने के बाद, अपने ऐप्लिकेशन के काम करने के तरीके पर नज़र रखें. कंपनी या ब्रैंड यह पक्का करें कि डिवाइस के Doze से बाहर निकलने पर ऐप ग्रेसफ़ुली रिकवर हो जाए.
ऐप्लिकेशन स्टैंडबाय की मदद से अपने ऐप्लिकेशन की जांच करना
अपने ऐप्लिकेशन पर ऐप स्टैंडबाय मोड की जांच करने के लिए, यह तरीका अपनाएं:
- Android 6.0 (एपीआई) वाले हार्डवेयर डिवाइस या वर्चुअल डिवाइस को कॉन्फ़िगर करना लेवल 23) या उससे ऊपर के सिस्टम की इमेज होनी चाहिए.
- डिवाइस को अपनी डेवलपमेंट मशीन से कनेक्ट करें और अपना ऐप्लिकेशन इंस्टॉल करें.
- अपना ऐप्लिकेशन चलाएं और उसे चालू रहने दें.
- नीचे दिए गए निर्देश चलाकर, ऐप्लिकेशन को ज़बरदस्ती ऐप्लिकेशन स्टैंडबाय मोड में चालू करें:
$ adb shell dumpsys battery unplug $ adb shell am set-inactive <packageName> true
- इन निर्देशों का इस्तेमाल करके, ऐप्लिकेशन को चालू करने की प्रक्रिया को सिम्युलेट करें:
$ adb shell am set-inactive <packageName> false $ adb shell am get-inactive <packageName>
- ऐप्लिकेशन को चालू करने के बाद, उसके व्यवहार को देखें. पक्का करें कि ऐप्लिकेशन स्टैंडबाय मोड से ग्रेसफ़ुल तरीके से रिकवर करता है. खास तौर पर, यह जांचें कि क्या आपका ऐप्लिकेशन नोटिफ़िकेशन और बैकग्राउंड जॉब उम्मीद के मुताबिक काम करते हैं.
छूट के लिए उचित इस्तेमाल के उदाहरण
यहां दी गई टेबल में, इस्तेमाल के कई उदाहरणों की जानकारी दी गई है. साथ ही, यह भी बताया गया है कि इनका इस्तेमाल किया जा सकता है या नहीं
ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS
का इस्तेमाल करने वाले ऐप्लिकेशन
इंटेंट कार्रवाई का इस्तेमाल भी किया जा सकता है. आम तौर पर, आपका ऐप्लिकेशन इन शर्तों को पूरा नहीं करता
अपवाद के तौर पर तब तक
इस बात की तकनीकी वजह है कि आपका ऐप्लिकेशन FCM की ज़्यादा प्राथमिकता वाला इस्तेमाल नहीं कर सकता
मैसेज.
अधिक जानकारी के लिए, इसके लिए सहायता इस्तेमाल के अन्य उदाहरण दिए गए हों.
टाइप | इस्तेमाल का उदाहरण | क्या FCM का इस्तेमाल किया जा सकता है? | क्या छूट मिल सकती है? | नोट |
---|---|---|---|---|
झटपट मैसेज करने, चैट करने या कॉल करने के लिए इस्तेमाल होने वाला ऐप्लिकेशन. | इस दौरान उपयोगकर्ताओं को रीयल-टाइम मैसेज भेजने की ज़रूरत होती है डिवाइस Doze में है या ऐप्लिकेशन, ऐप्लिकेशन स्टैंडबाय में है. | हां, FCM का इस्तेमाल किया जा रहा है | मान्य नहीं है | ऐप्लिकेशन को चालू करने और ऐक्सेस करने के लिए FCM के ज़्यादा प्राथमिकता वाले मैसेज का इस्तेमाल करें नेटवर्क. |
हां, लेकिन FCM उच्च प्राथमिकता वाले संदेशों का उपयोग नहीं किया जा रहा है. | ||||
झटपट मैसेज करने, चैट करने या कॉल करने के लिए इस्तेमाल होने वाला ऐप्लिकेशन; में इस्तेमाल किए जा सकते हैं. | नहीं, किसी दूसरी मैसेज सेवा पर तकनीकी निर्भरता की वजह से FCM का इस्तेमाल नहीं किया जा सकता सेवा या Doze और App Standby ने ऐप्लिकेशन के मुख्य फ़ंक्शन को काम करना बंद कर दिया. | स्वीकार्य | ||
Safety ऐप्लिकेशन. | ऐसे ऐप्लिकेशन जो उनके उपयोगकर्ताओं और उनके परिवार को सुरक्षित रखते हैं. | अगर लागू हो. | स्वीकार्य | |
टास्क ऑटोमेशन ऐप्लिकेशन. | ऐप्लिकेशन का मुख्य फ़ंक्शन, अपने-आप होने वाली कार्रवाइयां शेड्यूल करना है, जैसे कि इंस्टैंट मैसेज सेवा, वॉइस कॉल या फ़ोटो मैनेज करने की नई सुविधा. | अगर लागू हो. | स्वीकार्य | |
सहायक डिवाइस का साथी ऐप्लिकेशन. | ऐप्लिकेशन का मुख्य फ़ंक्शन, सहायक डिवाइस (जैसे, कीबोर्ड, माउस, मॉनिटर, वेबकैम वगैरह) की सुविधा देने के लिए इस्तेमाल किया जाने वाला सहायक डिवाइस इंटरनेट का ऐक्सेस. | अगर लागू हो. | स्वीकार्य | |
सिंक करने के लिए, ऐप्लिकेशन को समय-समय पर सिर्फ़ सहायक डिवाइस (जैसे, कीबोर्ड, माउस, मॉनिटर, वेबकैम वगैरह) से कनेक्ट करना होगा, या सिर्फ़ डिवाइसों से कनेक्ट करने की ज़रूरत होती है, जैसे कि वायरलेस हेडफ़ोन, से कनेक्ट किया जा सकता है. | अगर लागू हो. | मान्य नहीं है |