बैकग्राउंड में जगह की जानकारी और बैटरी लाइफ़ के बारे में जानकारी

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

बैकग्राउंड में जगह की जानकारी ऐक्सेस करने की सीमाएं सेट होने पर:

  • बैकग्राउंड में जगह की जानकारी ऐक्सेस करने का अनुरोध करने की सुविधा को सीमित कर दिया जाता है. साथ ही, जगह की जानकारी का हिसाब लगाया जाता है और उसे घंटे में कुछ ही बार डिलीवर किया जाता है.
  • वाई-फ़ाई स्कैन ज़्यादा सुरक्षित होते हैं. साथ ही, जब डिवाइस एक ही स्टैटिक ऐक्सेस पॉइंट से कनेक्ट रहता है, तो डिवाइस की जगह की जानकारी के अपडेट का हिसाब नहीं लगाया जाता.
  • जियोफ़ेंसिंग की रिस्पॉन्सिवनेस, कुछ सेकंड से लेकर करीब दो मिनट तक बदलती रहती है. इस बदलाव से बैटरी की परफ़ॉर्मेंस बेहतर होती है. कुछ डिवाइसों पर, यह 10 गुना तक बेहतर हो जाती है.

ज़रूरी जानकारी

इस दस्तावेज़ को समझने के लिए, यह ज़रूरी है कि आपको इन एपीआई के बारे में जानकारी हो:

बैटरी के तेज़ी से खर्च होने की समस्या के बारे में जानकारी

जगह की जानकारी इकट्ठा करने और बैटरी खर्च होने के बीच यह संबंध है:

  • सटीक जानकारी: जगह की जानकारी के डेटा की सटीक जानकारी. आम तौर पर, सटीक जानकारी जितनी ज़्यादा होगी, बैटरी उतनी ही ज़्यादा खर्च होगी.
  • फ़्रीक्वेंसी: जगह की जानकारी कितनी बार कैलकुलेट की जाती है. जगह की जानकारी जितनी ज़्यादा बार अपडेट की जाती है, बैटरी उतनी ही ज़्यादा खर्च होती है.
  • लेटेंसी: जगह की जानकारी का डेटा कितनी तेज़ी से डिलीवर किया जाता है. आम तौर पर, कम इंतज़ार के समय के लिए ज़्यादा बैटरी की ज़रूरत होती है.

सटीकता

setPriority() तरीके का इस्तेमाल करके, जगह की सटीक जानकारी दी जा सकती है. इसके लिए, इनमें से किसी एक वैल्यू को आर्ग्युमेंट के तौर पर पास करें:

  • PRIORITY_HIGH_ACCURACY से जगह की सबसे सटीक जानकारी मिलती है. इसके लिए, ज़रूरी इनपुट का इस्तेमाल किया जाता है. जैसे, जीपीएस, वाई-फ़ाई, और मोबाइल नेटवर्क. साथ ही, कई तरह के सेंसर का इस्तेमाल किया जाता है. इससे बैटरी ज़्यादा खर्च हो सकती है.
  • PRIORITY_BALANCED_POWER_ACCURACY, बैटरी की खपत को कम करते हुए जगह की सटीक जानकारी देता है. जीपीएस का इस्तेमाल बहुत कम किया जाता है. आम तौर पर, डिवाइस की जगह की जानकारी का पता लगाने के लिए, वाई-फ़ाई और सेल की जानकारी का इस्तेमाल किया जाता है.
  • PRIORITY_LOW_POWER ज़्यादातर सेल टावर पर निर्भर करता है. साथ ही, जीपीएस और वाई-फ़ाई इनपुट का इस्तेमाल नहीं करता. इससे, बैटरी कम खर्च होती है और शहर के लेवल पर जगह की जानकारी मिलती है.
  • PRIORITY_PASSIVE को अन्य ऐप्लिकेशन से जगह की जानकारी पैसिव तरीके से मिलती है. इन ऐप्लिकेशन के लिए, जगह की जानकारी पहले ही कंप्यूट की जा चुकी होती है.

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

आवृत्ति

जगह की जानकारी की फ़्रीक्वेंसी को दो तरीकों से तय किया जा सकता है:

  • अपने ऐप्लिकेशन की जगह की जानकारी का हिसाब लगाने के लिए, setIntervalMillis() तरीके का इस्तेमाल करके इंटरवल तय करें.
  • अन्य ऐप्लिकेशन की जगहों की जानकारी पाने के लिए, setMinUpdateIntervalMillis() तरीके का इस्तेमाल करके, समय अंतराल तय करें.

setIntervalMillis() का इस्तेमाल करते समय, ज़्यादा से ज़्यादा वैल्यू पास करें. यह बात खास तौर पर, बैकग्राउंड में जगह की जानकारी इकट्ठा करने के लिए सही है. इससे अक्सर बैटरी जल्दी खत्म हो जाती है. फ़ोरग्राउंड में इस्तेमाल के उदाहरणों के लिए, कुछ सेकंड के इंटरवल रिज़र्व करें.

Android 8.0 (एपीआई लेवल 26) में, बैकग्राउंड में जगह की जानकारी ऐक्सेस करने का अनुरोध करने की सीमाएं लागू की गई हैं. ये सीमाएं, इन रणनीतियों को लागू करती हैं. हालांकि, आपके ऐप्लिकेशन को Android 7.0 (एपीआई लेवल 24) और इससे पहले के वर्शन वाले डिवाइसों पर भी इन्हें लागू करने की कोशिश करनी चाहिए.

इंतज़ार का समय

setMaxUpdateDelayMillis() तरीके का इस्तेमाल करके, इंतज़ार का समय तय किया जा सकता है. आम तौर पर, इसमें ऐसी वैल्यू पास की जाती है जो setIntervalMillis() तरीके में तय किए गए इंटरवल से कई गुना ज़्यादा होती है. इस सेटिंग की वजह से, जगह की जानकारी मिलने में देरी होती है. साथ ही, जगह की जानकारी के कई अपडेट बैच में मिल सकते हैं. इन दोनों बदलावों से, बैटरी की खपत कम करने में मदद मिलती है.

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

जियोफ़ेंस का इस्तेमाल करते समय, ऐप्लिकेशन को बैटरी बचाने के लिए, setNotificationResponsiveness() तरीके में बड़ी वैल्यू पास करनी चाहिए. हमारा सुझाव है कि आप पांच मिनट या उससे ज़्यादा की वैल्यू सेट करें.

इस बारे में और पढ़ें

ज़्यादा जानकारी के लिए, ये दस्तावेज़ देखें:

  • सुझाव: इस गाइड में कुछ ऐसी कार्रवाइयों के सुझाव दिए गए हैं जिन्हें अपनाकर, बैटरी लाइफ़ पर ऐप्लिकेशन के असर को कम किया जा सकता है.
  • इस्तेमाल के उदाहरण: इस गाइड में, इस्तेमाल के कई सामान्य उदाहरण दिए गए हैं. इनमें, जगह की जानकारी का डेटा इस्तेमाल करने वाली सेवाओं का इस्तेमाल किया जा सकता है. साथ ही, इन मामलों में बैटरी लाइफ़ पर पड़ने वाले असर को कम किया जा सकता है.