Doze Mode Android का एक ऊर्जा बचत सुविधा है, जिसे संस्करण 6.0 Marshmallow में पेश किया गया था, जो डिवाइस के निष्क्रिय होने पर एप्लिकेशन की पृष्ठभूमि गतिविधि को महत्वपूर्ण रूप से प्रतिबंधित करता है। सिस्टम एप्लिकेशन को कम ऊर्जा खपत वाली स्थिति में डालता है, नेटवर्क अनुरोधों, सिंक्रोनाइज़ेशन और JobScheduler को स्थगित करके बैटरी जीवन बढ़ाने के लिए। Android Developers, 2025 के विश्लेषण के अनुसार, Doze Mode मॉडल और OS संस्करण के आधार पर डिवाइस के स्टैंडबाय समय को 2–3 गुना तक बढ़ा सकता है।
मुख्य बिंदु
Doze Mode Android का एक अंतर्निहित ऊर्जा बचत तंत्र है जो तब सक्रिय होता है जब डिवाइस चार्जर से कनेक्ट नहीं है, स्क्रीन बंद है, और उपयोगकर्ता ने एक निश्चित समय तक डिवाइस के साथ इंटरैक्ट नहीं किया है। Doze का उद्देश्य स्टैंडबाय मोड में बैटरी जीवन को अधिकतम करने के लिए एप्लिकेशन की पृष्ठभूमि गतिविधि को कम करना है। सिस्टम JobScheduler, खाता सिंक्रोनाइज़ेशन, AlarmManager और नेटवर्क अनुरोधों को स्थगित करता है।
यह मोड Android 6.0 Marshmallow (API 23) में पेश किया गया था और बाद के संस्करणों में काफी सुधार किया गया। Android 7.0 Nougat ने दूसरा चरण (Light Doze) पेश किया जो डिवाइस के चलने पर सक्रिय होता है। Android 8.0 ने Doze के साथ काम करने वाली पृष्ठभूमि सेवाओं पर अतिरिक्त प्रतिबंध लगाए। Android 12+ में, Doze को उपयोगकर्ता व्यवहार का विश्लेषण करने वाली अद्यतन बैटरी प्रबंधन प्रणाली के साथ एकीकृत किया गया।
यह समझना महत्वपूर्ण है: Doze Mode एप्लिकेशन को पूरी तरह से निष्क्रिय नहीं करता है। यह उन्हें स्थगित कार्यों वाली स्थिति में डालता है, लेकिन प्रक्रियाओं को समाप्त नहीं करता है। सूचना वाला Foreground Service काम करता रहता है, उच्च-प्राथमिकता वाली push सूचनाएं (FCM high-priority) वितरित की जाती हैं, और अलार्म शेड्यूल के अनुसार बजते हैं। Doze केवल पृष्ठभूमि संचालन को प्रभावित करता है जिसे उपयोगकर्ता उस समय नहीं देखता या अपेक्षा नहीं करता।
Doze Mode सभी शर्तों के पूरे होने पर सक्रिय होता है: स्क्रीन 30 मिनट से अधिक समय तक बंद रही (पहला सक्रियण), डिवाइस स्थिर है (एक्सेलेरोमीटर का उपयोग करके), और चार्जर से कनेक्ट नहीं है। यदि उपयोगकर्ता फ़ोन उठाता है या चार्जर कनेक्ट करता है, तो Doze तुरंत निष्क्रिय हो जाता है। Android 7+ में, Light Doze डिवाइस के चलने पर भी केवल 5 मिनट की निष्क्रियता के बाद सक्रिय होता है।
Doze Mode सिस्टम सेवा DeviceIdleController के माध्यम से पृष्ठभूमि गतिविधि का प्रबंधन करता है, जो सेंसर, स्क्रीन और चार्जर की स्थिति का विश्लेषण करता है। जब सभी सक्रियण शर्तें पूरी होती हैं, तो सिस्टम एप्लिकेशन को स्टैंडबाय मोड में डालता है, उनके अनुरोधों को रखरखाव विंडो में समूहित करता है। इन विंडो के अंदर, सभी स्थगित कार्य — नेटवर्क कॉल, सिंक्रोनाइज़ेशन, AlarmManager — एक बैच में निष्पादित होते हैं।
सिस्टम PowerManager नियंत्रित करता है कि कौन से एप्लिकेशन Doze से बाहर निकल सकते हैं। उच्च-प्राथमिकता वाली push सूचनाएं (FCM high-priority) संदेश वितरित करने के लिए डिवाइस को जगा सकती हैं। सिस्टम Doze को उन एप्लिकेशन के लिए अनदेखा करता है जिन्हें उपयोगकर्ता ने बैटरी अनुकूलन Whitelist में जोड़ा है। अन्य सभी एप्लिकेशन को अगली रखरखाव विंडो की प्रतीक्षा करनी होगी।
Deep Doze में रखरखाव विंडो की अवधि तेजी से बढ़ती है: पहली विंडो 1 घंटे के बाद, दूसरी 2 घंटे के बाद, तीसरी 4 घंटे के बाद, और इसी तरह 12 घंटे के अधिकतम अंतराल तक। इसका मतलब है कि डिवाइस जितना अधिक समय Doze में रहेगा, एप्लिकेशन उतनी ही कम बार पृष्ठभूमि कार्य कर सकते हैं — बैटरी को यथासंभव आक्रामक रूप से बचाया जाता है।
Doze Mode में, सभी नेटवर्क अनुरोध रखरखाव विंडो खुलने तक निलंबित रहते हैं। एकमात्र अपवाद हैं FCM उच्च-प्राथमिकता संदेश (पेलोड में “high_priority” टैग के साथ) और AlarmManager से setAndAllowWhileIdle() या setExactAndAllowWhileIdle() फ़्लैग वाले सिग्नल। Retrofit, OkHttp या Volley के माध्यम से नियमित नेटवर्क कॉल विंडो खुलने तक निष्पादित नहीं होंगे।
Doze Mode दो चरणों से बना है: Light Doze (हल्की नींद) और Deep Doze (गहरी नींद)। प्रत्येक चरण अपने स्वयं के प्रतिबंध लगाता है और विभिन्न सक्रियण सीमाएं रखता है। चरणों के बीच अंतर को समझना एक डेवलपर के लिए महत्वपूर्ण है जो ऊर्जा बचत मोड के प्रति लचीली पृष्ठभूमि कार्यों को डिज़ाइन करता है।
Light Doze डिवाइस के 5–30 मिनट निष्क्रिय रहने (स्क्रीन बंद, कोई हलचल नहीं) के बाद सक्रिय होता है। इस चरण में, नेटवर्क अनुरोध और सिंक्रोनाइज़ेशन निलंबित हो जाते हैं, लेकिन AlarmManager और JobScheduler छोटी देरी के साथ काम करते रहते हैं। एप्लिकेशन push सूचना प्राप्त करने या चार्जर से कनेक्ट होने पर Light Doze से बाहर निकल सकते हैं। Light Doze को पूर्ण गतिहीनता की आवश्यकता नहीं है — डिवाइस गति में हो सकता है।
Deep Doze 60–90 मिनट की निष्क्रियता के बाद स्थिर डिवाइस (एक्सेलेरोमीटर कोई हलचल नहीं पकड़ता) के साथ होता है। Deep Doze में, सिस्टम कार्यों को स्थगित करने में काफी आक्रामक होता है: रखरखाव विंडो कम बार खुलती हैं (तेजी से बढ़ते अंतराल के साथ), AlarmManager केवल setAndAllowWhileIdle() फ़्लैग के साथ काम करता है, और WakeLock सामान्य तरीके से काम नहीं करता है। Whitelist में नहीं होने वाले एप्लिकेशन लगभग पूरी तरह से पृष्ठभूमि गतिविधि से वंचित हो जाते हैं।
| पैरामीटर | Light Doze | Deep Doze |
|---|---|---|
| सक्रियण समय | 5–30 मिनट | 60–90 मिनट |
| गति आवश्यकता | आवश्यक नहीं | गतिहीनता |
| विंडो अंतराल | 10–60 मिनट | 1–12 घंटे |
| AlarmManager | देरी के साथ काम करता है | केवल withAllowWhileIdle |
| विंडो में नेटवर्क | उपलब्ध | उपलब्ध |
Doze Mode कई श्रेणियों के प्रतिबंध लगाता है जिन्हें डेवलपर को एप्लिकेशन डिज़ाइन करते समय ध्यान में रखना चाहिए। इन प्रतिबंधों को अनदेखा करने से पृष्ठभूमि कार्य निष्पादित नहीं होते, और उपयोगकर्ता एप्लिकेशन का गलत व्यवहार देखता है — लापता अपडेट, न भेजे गए संदेश, अधूरा सिंक्रोनाइज़ेशन।
सभी नेटवर्क अनुरोध रखरखाव विंडो खुलने तक अवरुद्ध होते हैं। यह HTTP कॉल, WebSocket कनेक्शन और फ़ाइल डाउनलोड पर लागू होता है। अपवाद FCM उच्च-प्राथमिकता संदेश हैं, जो Doze से स्वतंत्र Google Play Services के एक अलग चैनल से गुजरते हैं। महत्वपूर्ण डेटा सिंक्रोनाइज़ेशन के लिए, NetworkType.CONNECTED नीति के साथ WorkManager का उपयोग करने की अनुशंसा की जाती है।
AlarmManager Deep Doze में setAndAllowWhileIdle() और setExactAndAllowWhileIdle() विधियों से बनाए गए अलार्म को छोड़कर सभी को स्थगित कर देता है। हालांकि, इन विधियों की भी एक सीमा है — प्रति एप्लिकेशन प्रति 9 मिनट में 1 से अधिक सक्रियण नहीं। Deep Doze में setExact() के साथ सटीक अलार्म निर्दिष्ट समय पर सक्रियण की गारंटी नहीं देते हैं।
WakeLock Doze Mode में असामान्य व्यवहार करता है: सिस्टम Whitelist के बाहर के एप्लिकेशन के लिए वेक लॉक को बनाए नहीं रखता है। भले ही किसी एप्लिकेशन ने सही तरीके से PARTIAL_WAKE_LOCK प्राप्त किया हो, जब Deep Doze शुरू होता है, तो सिस्टम इसे जबरन जारी कर सकता है। Doze में कार्य निष्पादन की गारंटी का एकमात्र तरीका सूचना के साथ Foreground Service का उपयोग करना है।
Doze Whitelist उन एप्लिकेशन की सूची है जिन्हें सिस्टम न्यूनतम प्रतिबंधों के साथ ऊर्जा बचत मोड में पृष्ठभूमि गतिविधि की अनुमति देता है। उपयोगकर्ता सेटिंग्स → बैटरी → बैटरी अनुकूलन के माध्यम से सूची में मैन्युअल रूप से एप्लिकेशन जोड़ सकता है। सिस्टम एप्लिकेशन, लॉन्चर और Google Play Services डिफ़ॉल्ट रूप से Whitelist में होते हैं।
एक डेवलपर Intent ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS के साथ सिस्टम डायलॉग के माध्यम से Whitelist में जोड़ने का अनुरोध कर सकता है। इसके लिए मेनिफेस्ट में REQUEST_IGNORE_BATTERY_OPTIMIZATIONS अनुमति की आवश्यकता होती है। हालांकि, Google बिना वैध कारण के अपवाद का अनुरोध करने की अनुशंसा नहीं करता है — इस क्षमता का दुरुपयोग करने वाले एप्लिकेशन Google Play पर प्रकाशित होने पर अस्वीकार किए जाने का जोखिम उठाते हैं।
Whitelist के बिना, एक एप्लिकेशन डिवाइस को Doze से जगाने के लिए FCM उच्च-प्राथमिकता का उपयोग कर सकता है। ऐसा प्रत्येक संदेश एप्लिकेशन को कार्य करने के लिए एक छोटी विंडो (10–30 सेकंड) देता है। लंबे संचालन के लिए, एप्लिकेशन को Foreground Service शुरू करना होगा, जो Doze रखरखाव विंडो के भीतर काम करना जारी रखता है। Google कुछ प्रकार के एप्लिकेशन के लिए छूट तंत्र भी प्रदान करता है: नेविगेशन, चिकित्सा, मैसेजिंग।
यह जांचने के लिए कि एप्लिकेशन बैटरी अनुकूलन Whitelist में है या नहीं, powerManager.isIgnoringBatteryOptimizations() विधि का उपयोग करें। यदि विधि false लौटाती है, तो एप्लिकेशन सभी Doze प्रतिबंधों के अधीन है। यदि true लौटाती है, तो एप्लिकेशन Deep Doze में भी बिना प्रतिबंधों के Wakelock, AlarmManager और नेटवर्क का उपयोग कर सकता है। हालांकि, इस विशेषाधिकार का दुरुपयोग करने से उपयोगकर्ताओं से खराब समीक्षाएं मिलेंगी।
Doze Mode में एप्लिकेशन व्यवहार का परीक्षण एक अनिवार्य विकास चरण है, क्योंकि Doze पृष्ठभूमि कार्यों को बाधित कर सकता है। Android डिवाइस को Light Doze और Deep Doze में जबरन स्थानांतरित करने के लिए ADB के माध्यम से कमांड-लाइन उपकरण प्रदान करता है। परीक्षण Android 6.0+ वाले भौतिक डिवाइस या एमुलेटर पर किया जाना चाहिए।
Light Doze में प्रवेश करने के लिए, कमांड adb shell dumpsys deviceidle step light का उपयोग करें। Deep Doze के लिए — adb shell dumpsys deviceidle step deep। कमांड adb shell dumpsys deviceidle force-idle deep मानक टाइमआउट की प्रतीक्षा किए बिना तुरंत डिवाइस को Deep Doze में स्थानांतरित करता है। परीक्षण के बाद, कमांड adb shell dumpsys deviceidle unforce से Doze से बाहर निकलें।
# Light Doze में जबरन प्रवेश
$ adb shell dumpsys deviceidle step light
# Deep Doze में जबरन प्रवेश
$ adb shell dumpsys deviceidle step deep
# तुरंत Deep Doze में स्थानांतरण
$ adb shell dumpsys deviceidle force-idle deep
# Doze से बाहर निकलें
$ adb shell dumpsys deviceidle unforce
# Doze स्थिति देखें
$ adb shell dumpsys deviceidle
Doze Mode में स्थानांतरित होने के बाद, जांचें: क्या नेटवर्क अनुरोध काम करते हैं (उन्हें स्थगित होना चाहिए), क्या AlarmManager सक्रिय होता है, क्या FCM संदेश वितरित होते हैं, क्या WorkManager कार्य सही ढंग से निष्पादित होते हैं। WorkManager Doze में काम करना जारी रखता है: इसके कार्य रखरखाव विंडो में निष्पादित होते हैं। हालांकि, यदि किसी कार्य को तत्काल निष्पादन की आवश्यकता है, तो setExpedited() निर्दिष्ट करें या Foreground Service का उपयोग करें।
Doze Mode के प्रति लचीला एप्लिकेशन विकसित करने के लिए पृष्ठभूमि कार्यों के दृष्टिकोण पर पुनर्विचार करने की आवश्यकता है। Google अनुशंसा करता है कि एप्लिकेशन को इस तरह डिज़ाइन करें कि वह Doze के किसी भी प्रतिबंध के तहत सही ढंग से काम करे, बिना पृष्ठभूमि संचालन के तत्काल निष्पादन पर निर्भर हुए। मूल सिद्धांत उन सभी पृष्ठभूमि कार्यों के लिए WorkManager का उपयोग करना है जिन्हें स्थगित किया जा सकता है।
WorkManager पृष्ठभूमि कार्यों के लिए Google का अनुशंसित API है क्योंकि यह स्वचालित रूप से Doze के अनुकूल हो जाता है। WorkManager पुराने संस्करणों पर JobScheduler (API 23+) या AlarmManager + BroadcastReceiver का उपयोग करता है। WorkManager कार्य निकटतम Doze रखरखाव विंडो में निष्पादित होते हैं, या आवश्यकता होने पर Expedited Work (हुड के नीचे Foreground Service) के माध्यम से तुरंत।
यदि कोई कार्य स्थगित नहीं किया जा सकता (मीडिया प्लेबैक, नेविगेशन, VoIP), तो अनिवार्य सूचना के साथ Foreground Service का उपयोग करें। Foreground Service Doze से छूट प्राप्त करता है: वह WakeLock रख सकता है और नेटवर्क अनुरोध निष्पादित कर सकता है। हालांकि, Foreground Service भी कुछ प्रकार के कार्यों के लिए Deep Doze रखरखाव विंडो नीतियों के अधीन है — उदाहरण के लिए, dataSync।
तत्काल ध्यान देने वाले संदेशों (इनकमिंग कॉल, अत्यावश्यक सूचना) के वितरण के लिए, FCM उच्च-प्राथमिकता संदेशों का उपयोग करें। ऐसे संदेश डिवाइस को Doze से जगाते हैं और एप्लिकेशन को प्रसंस्करण के लिए एक छोटी विंडो देते हैं। नियमित सूचनाओं के लिए उच्च-प्राथमिकता का उपयोग न करें — इससे बैटरी तेजी से खत्म होगी और Google Play द्वारा नीति उल्लंघन माना जा सकता है।
अक्सर पूछे जाने वाले प्रश्न
Doze Mode Android 6+ का एक ऊर्जा बचत मोड है जो डिवाइस के उपयोग में न होने पर (स्क्रीन बंद, कोई हलचल नहीं) एप्लिकेशन की पृष्ठभूमि गतिविधि को प्रतिबंधित करता है। सिस्टम नेटवर्क अनुरोधों, सिंक्रोनाइज़ेशन और JobScheduler को स्थगित करता है, उन्हें बैटरी बचाने के लिए रखरखाव विंडो में समूहित करता है।
Doze Mode के दो चरण हैं: Light Doze (हल्की नींद) 5–30 मिनट के बाद सक्रिय होता है और AlarmManager को देरी के साथ काम करने देता है। Deep Doze (गहरी नींद) 60–90 मिनट की गतिहीनता के बाद होता है, जो 12 घंटे तक की रखरखाव विंडो के साथ पृष्ठभूमि कार्यों को आक्रामक रूप से प्रतिबंधित करता है।
Doze नेटवर्क अनुरोधों को अवरुद्ध करता है, AlarmManager को स्थगित करता है (setAndAllowWhileIdle को छोड़कर), WakeLock को जबरन जारी करता है और JobScheduler को रखरखाव विंडो में समूहित करता है। अपवादों में Foreground Service, FCM उच्च-प्राथमिकता और उपयोगकर्ता की Whitelist के एप्लिकेशन शामिल हैं।
मेनिफेस्ट में REQUEST_IGNORE_BATTERY_OPTIMIZATIONS अनुमति का अनुरोध करें और ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS क्रिया के साथ Intent भेजें। सिस्टम उपयोगकर्ता को एक डायलॉग दिखाएगा। Whitelist में जोड़ना एक विशेषाधिकार है जिसे Google केवल महत्वपूर्ण एप्लिकेशन के लिए उपयोग करने की अनुशंसा करता है।
ADB कमांड का उपयोग करें: Deep Doze में प्रवेश के लिए adb shell dumpsys deviceidle force-idle deep, Light Doze के लिए adb shell dumpsys deviceidle step light, बाहर निकलने के लिए adb shell dumpsys deviceidle unforce। प्रत्येक मोड में WorkManager, AlarmManager और FCM की जांच करें।
सारांश
हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे
IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।
यह भी पढ़ें