डिवाइस को चालू रखने के लिए सही एपीआई चुनना

जब उपयोगकर्ता अपने Android डिवाइस का इस्तेमाल नहीं करता है, तो बैटरी खत्म होने से बचाने के लिए, डिवाइस तुरंत स्लीप मोड में चला जाता है. हालांकि, कई बार किसी ऐप्लिकेशन को सीपीयू को निलंबित होने से रोकना होता है. कुछ मामलों में, ऐप्लिकेशन को काम करते समय स्क्रीन चालू रखने की ज़रूरत पड़ सकती है. अन्य मामलों में, ऐप्लिकेशन को स्क्रीन चालू रखने की ज़रूरत नहीं होती. हालांकि, उसे सीपीयू को चालू रखने की ज़रूरत होती है.

आपके ऐप्लिकेशन की ज़रूरतों के हिसाब से, आपको तरीका चुनना होगा. हालांकि, सामान्य नियम यह है कि आपको सबसे आसान तरीका इस्तेमाल करना चाहिए, ताकि सिस्टम के संसाधनों पर आपके ऐप्लिकेशन का असर कम से कम पड़े. इस दस्तावेज़ से, आपको अपनी स्थिति के हिसाब से सही Android टेक्नोलॉजी चुनने में मदद मिलती है.

सही टेक्नोलॉजी चुनना

डिवाइस को चालू रखने का सबसे अच्छा विकल्प, आपके ऐप्लिकेशन की ज़रूरतों पर निर्भर करता है. इस सेक्शन में, सही तरीका चुनने में आपकी मदद की जाती है.

डिवाइस को चालू रखने का सही तरीका चुनने के बारे में खास जानकारी देने वाला फ़्लोचार्ट. फ़्लोचार्ट में मौजूद कॉन्टेंट के बारे में यहां ज़्यादा जानकारी दी गई है.

  • क्या आपके ऐप्लिकेशन को स्क्रीन चालू रखने की ज़रूरत है?
    • अगर हां, तो स्क्रीन चालू रखना लेख पढ़ें. ऐसा हो सकता है कि आपकी ज़रूरत के हिसाब से कोई खास एपीआई उपलब्ध हो. उदाहरण के लिए, अगर आपको फ़ोन कॉल का यूज़र इंटरफ़ेस (यूआई) लागू करना है, तो Android Telecom Framework का इस्तेमाल किया जा सकता है. यह फ़्रेमवर्क, ज़रूरत पड़ने पर स्क्रीन को चालू रखता है. अगर आपकी स्थिति के लिए कोई खास मकसद वाला एपीआई उपलब्ध नहीं है, तो keepScreenOn एपीआई का इस्तेमाल किया जा सकता है.
  • क्या आपका ऐप्लिकेशन फ़ोरग्राउंड सेवा चला रहा है और सेवा चालू रहने के दौरान, स्क्रीन बंद होने पर भी डिवाइस को चालू रखना है?
    • अगर नहीं, तो आपको डिवाइस को चालू रखने की ज़रूरत नहीं है. अगर उपयोगकर्ता ऐप्लिकेशन के साथ इंटरैक्ट कर रहा है, तो डिवाइस चालू रहेगा. अगर उपयोगकर्ता आपके ऐप्लिकेशन के साथ इंटरैक्ट नहीं कर रहा है और आपने फ़ोरग्राउंड सेवा चालू नहीं की है, तो आपको डिवाइस को ज़रूरत के हिसाब से निलंबित मोड में जाने देना चाहिए. अगर आपको सिर्फ़ यह पक्का करना है कि उपयोगकर्ता के ऐप्लिकेशन से दूर रहने के दौरान कुछ काम हो जाए, तो सबसे सही विकल्प ढूंढने के लिए, बैकग्राउंड टास्क का दस्तावेज़ देखें.
    • अगर हां, तो पहले पुष्टि करें कि आपको वाकई फ़ोरग्राउंड सेवा का इस्तेमाल करना है. आपकी स्थिति के आधार पर, फ़ोरग्राउंड सेवा के बजाय किसी खास मकसद के लिए बनाए गए एपीआई का इस्तेमाल किया जा सकता है. इनके बारे में जानकारी, फ़ोरग्राउंड सेवा के दस्तावेज़ में देखी जा सकती है. उदाहरण के लिए, अगर आपको उपयोगकर्ता की जगह की जानकारी ट्रैक करनी है, तो location फ़ोरग्राउंड सेवा के बजाय geofencing API का इस्तेमाल किया जा सकता है.
  • क्या फ़ोरग्राउंड सेवा चालू होने और डिवाइस की स्क्रीन बंद होने पर, डिवाइस के निलंबित होने से उपयोगकर्ता अनुभव पर बुरा असर पड़ेगा? (उदाहरण के लिए, अगर सूचनाओं को अपडेट करने के लिए फ़ोरग्राउंड सेवा का इस्तेमाल किया जा रहा है, तो डिवाइस के निलंबित होने पर उपयोगकर्ता को खराब अनुभव नहीं मिलेगा.)
    • अगर नहीं, तो वेक लॉक का इस्तेमाल न करें. जब उपयोगकर्ता अपने डिवाइस का इस्तेमाल करना शुरू करता है, तो यह कार्रवाई अपने-आप फिर से शुरू हो जाती है. इससे डिवाइस निलंबित मोड से बाहर आ जाता है.
    • अगर हां, तो आपको वेक लॉक का इस्तेमाल करना पड़ सकता है. हालांकि, आपको यह देखना चाहिए कि कहीं ऐसा तो नहीं कि आप पहले से ही किसी एपीआई का इस्तेमाल कर रहे हों या कोई ऐसी कार्रवाई कर रहे हों जो आपकी ओर से वेक लॉक का एलान करती हो. इसके बारे में डिवाइस को चालू रखने वाली कार्रवाइयां में बताया गया है.

ऐसी कार्रवाइयां जिनकी वजह से डिवाइस चालू रहता है

अगर आपका ऐप्लिकेशन इनमें से कोई भी काम कर रहा है, तो आपको वेक लॉक सेट करने की ज़रूरत नहीं है. नीचे दी गई कार्रवाइयों और एपीआई की वजह से, डिवाइस चालू रहता है.

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

यह भी देखें: