जब उपयोगकर्ता अपने Android डिवाइस को कुछ समय के लिए इस्तेमाल नहीं करता, तो वह डिवाइस तुरंत निलंबित हो जाता है, ताकि उसकी बैटरी जल्दी खत्म न हो. हालांकि, कुछ मामलों में ऐप्लिकेशन को सीपीयू को निलंबित होने से रोकना पड़ता है. कुछ मामलों में, ऐप्लिकेशन के काम करने के दौरान, हो सकता है कि उसे स्क्रीन चालू रखनी पड़े. अन्य मामलों में, ऐप्लिकेशन को स्क्रीन चालू रखने की ज़रूरत नहीं होती. हालांकि, सीपीयू को चालू रखना ज़रूरी होता है.
आपके ऐप्लिकेशन की ज़रूरतों के हिसाब से, आपको कोई तरीका अपनाना होगा. हालांकि, आम तौर पर, आपको अपने ऐप्लिकेशन के लिए सबसे आसान तरीका अपनाना चाहिए, ताकि सिस्टम के रिसॉर्स पर उसका कम से कम असर पड़े. इस दस्तावेज़ से, आपको अपनी ज़रूरत के हिसाब से सही Android टेक्नोलॉजी चुनने में मदद मिलेगी.
सही टेक्नोलॉजी चुनना
आपके डिवाइस को चालू रखने का सबसे अच्छा विकल्प, आपके ऐप्लिकेशन की ज़रूरतों पर निर्भर करता है. इस सेक्शन से, आपको सही तरीका चुनने में मदद मिलेगी.
- क्या आपके ऐप्लिकेशन को स्क्रीन चालू रखने की ज़रूरत है?
- अगर हां, तो स्क्रीन चालू रखें देखें. ऐसा हो सकता है कि आपके काम के लिए कोई खास एपीआई उपलब्ध हो. उदाहरण के लिए, अगर आपको फ़ोन कॉल का यूज़र इंटरफ़ेस (यूआई) लागू करना है, तो Android टेलीकॉम फ़्रेमवर्क का इस्तेमाल किया जा सकता है. यह ज़रूरत पड़ने पर स्क्रीन को चालू रखता है. अगर आपकी स्थिति के लिए कोई खास एपीआई उपलब्ध नहीं है, तो
keepScreenOn
एपीआई का इस्तेमाल किया जा सकता है.
- अगर हां, तो स्क्रीन चालू रखें देखें. ऐसा हो सकता है कि आपके काम के लिए कोई खास एपीआई उपलब्ध हो. उदाहरण के लिए, अगर आपको फ़ोन कॉल का यूज़र इंटरफ़ेस (यूआई) लागू करना है, तो Android टेलीकॉम फ़्रेमवर्क का इस्तेमाल किया जा सकता है. यह ज़रूरत पड़ने पर स्क्रीन को चालू रखता है. अगर आपकी स्थिति के लिए कोई खास एपीआई उपलब्ध नहीं है, तो
- क्या आपका ऐप्लिकेशन कोई फ़ोरग्राउंड सेवा चला रहा है और सेवा के चालू होने पर, स्क्रीन बंद होने पर भी आपको डिवाइस को चालू रखना है?
- अगर नहीं, तो आपको डिवाइस को चालू रखने की ज़रूरत नहीं है. अगर उपयोगकर्ता ऐप्लिकेशन के साथ सक्रिय रूप से इंटरैक्ट कर रहा है, तो डिवाइस चालू रहेगा. अगर उपयोगकर्ता आपके ऐप्लिकेशन का इस्तेमाल नहीं कर रहा है और आपने कोई फ़ोरग्राउंड सेवा नहीं चलाई है, तो ज़रूरत पड़ने पर डिवाइस को निलंबित मोड में जाने दें. अगर आपको यह पक्का करना है कि उपयोगकर्ता के ऐप्लिकेशन से बाहर रहने के दौरान भी कोई काम पूरा हो जाए, तो सबसे सही विकल्प खोजने के लिए, बैकग्राउंड टास्क दस्तावेज़ देखें.
- अगर हां, तो पहले पुष्टि करें कि आपको फ़ोरग्राउंड सेवा का इस्तेमाल करना है या नहीं. आपकी स्थिति के आधार पर, हो सकता है कि आपके पास किसी खास मकसद के लिए, फ़ोरग्राउंड सेवा के बजाय एपीआई का इस्तेमाल करने का विकल्प हो.
इनके बारे में जानकारी, फ़ोरग्राउंड सेवा के दस्तावेज़ में मिल सकती है. उदाहरण के लिए, अगर आपको उपयोगकर्ता की जगह की जानकारी ट्रैक करनी है, तो
location
फ़ोरग्राउंड सेवा के बजाय, जियोफ़ेंसिंग एपीआई का इस्तेमाल किया जा सकता है.
- क्या फ़ोरग्राउंड सेवा के चलने और डिवाइस की स्क्रीन के बंद होने के दौरान, डिवाइस के निलंबित होने से उपयोगकर्ता अनुभव पर असर पड़ेगा? उदाहरण के लिए, अगर सूचनाओं को अपडेट करने के लिए फ़ोरग्राउंड सेवा का इस्तेमाल किया जा रहा है, तो डिवाइस के निलंबित होने पर भी उपयोगकर्ता को अच्छा अनुभव मिल सकता है.
- अगर नहीं, तो वेकलॉक का इस्तेमाल न करें. उपयोगकर्ता के डिवाइस पर फिर से कोई कार्रवाई होने पर, यह कार्रवाई अपने-आप फिर से शुरू हो जाती है. इससे, डिवाइस निलंबित होने की स्थिति से बाहर आ जाता है.
- अगर हां, तो आपको वेक लॉक का इस्तेमाल करना पड़ सकता है. हालांकि, आपको यह देखना चाहिए कि क्या आपने पहले से ही किसी एपीआई का इस्तेमाल किया है या कोई ऐसी कार्रवाई की है जिससे डिवाइस को वॉकी लॉक मोड में रखा गया है. इस बारे में ऐसी कार्रवाइयां जो डिवाइस को चालू रखती हैं में बताया गया है.
ऐसी कार्रवाइयां जिनकी वजह से डिवाइस चालू रहता है
अगर आपका ऐप्लिकेशन इनमें से कोई काम कर रहा है, तो आपको खुद से वॉक लॉक सेट करने की ज़रूरत नहीं है. नीचे दी गई कार्रवाइयां और एपीआई, आपके लिए डिवाइस को चालू रखते हैं.
- अगर ऑडियो चलाया जा रहा है, तो ऑडियो सिस्टम आपके लिए वॉक लॉक सेट और मैनेज करता है. आपको खुद ऐसा करने की ज़रूरत नहीं है.
- अगर टास्क शेड्यूल करने वाले एपीआई या लाइब्रेरी का इस्तेमाल किया जा रहा है, जैसे कि WorkManager,
JobScheduler
याDownloadManager
, तो सिस्टम या लाइब्रेरी एक वेक लॉक हासिल करती है. इसे आपके ऐप्लिकेशन को एट्रिब्यूट किया जाता है. - अगर Media3 ExoPlayer का इस्तेमाल किया जा रहा है, तो प्लेयर के लिए वॉक लॉक सेट करने के लिए,
ExoPlayer.setWakeMode()
का इस्तेमाल किया जा सकता है. - डिवाइस के कुछ सेंसर, वेक-अप सेंसर होते हैं. जब इन सेंसर के पास रिपोर्ट करने के लिए डेटा होता है, तो डिवाइस को चालू करने के लिए
SensorManager
का इस्तेमाल किया जा सकता है. यह देखने के लिए कि कोई सेंसर, स्मार्टवॉच को जगाने वाला सेंसर है या नहीं,Sensor.isWakeUpSensor
को कॉल करें.