बैकग्राउंड में जगह की जानकारी का इस्तेमाल करने से, बैटरी लाइफ़ पर काफ़ी असर पड़ सकता है. Android, बैकग्राउंड में जगह की जानकारी इकट्ठा करने की सुविधा को सीमित करता है. इससे डेवलपर को बैटरी लाइफ़ को बेहतर बनाने के लिए, अपने ऐप्लिकेशन को ऑप्टिमाइज़ करने में मदद मिलती है. ये ऑप्टिमाइज़ेशन सभी डिवाइसों के लिए फ़ायदेमंद होते हैं. भले ही, वे किसी भी Android वर्शन पर काम कर रहे हों.
बैकग्राउंड में जगह की जानकारी की सेवा की सीमाएं सेट करने पर:
- बैकग्राउंड में जगह की जानकारी इकट्ठा करने की सुविधा को कम कर दिया जाता है. साथ ही, जगह की जानकारी का हिसाब लगाया जाता है और उसे एक घंटे में सिर्फ़ कुछ ही बार डिलीवर किया जाता है.
- वाई-फ़ाई स्कैन ज़्यादा सावधानी से किए जाते हैं. साथ ही, जब डिवाइस एक ही स्टैटिक ऐक्सेस पॉइंट से कनेक्ट रहता है, तो जगह की जानकारी के अपडेट का हिसाब नहीं लगाया जाता.
- जियोफ़ेंसिंग की प्रतिक्रिया देने में लगने वाला समय, कुछ सेकंड से बदलकर करीब दो मिनट हो जाता है. इस बदलाव से बैटरी की परफ़ॉर्मेंस बेहतर होती है. कुछ डिवाइसों पर, बैटरी की परफ़ॉर्मेंस 10 गुना तक बेहतर हो सकती है.
ज़रूरी जानकारी
इस दस्तावेज़ में, इन एपीआई के बारे में जानकारी दी गई है:
- Google लोकेशन सर्विस. ये एपीआई, फ़्रेमवर्क की जगह की जानकारी देने वाले एपीआई की तुलना में ज़्यादा सटीक जानकारी देते हैं और बैटरी पर कम असर डालते हैं.
- Fused Location Provider. यह एपीआई, जीपीएस, वाई-फ़ाई, और मोबाइल नेटवर्क के साथ-साथ एक्सलरोमीटर, जाइरोस्कोप, मैग्नेटोमीटर, और अन्य सेंसर के सिग्नल को जोड़ता है.
- जियोफ़ेंसिंग: यह एपीआई, कई तरह से जांची गई सही जगह की जानकारी देने वाले एपीआई के आधार पर बनाया गया है. साथ ही, इसे बैटरी की परफ़ॉर्मेंस के लिए ऑप्टिमाइज़ किया गया है.
बैटरी तेज़ी से खर्च होने की समस्या को समझना
जगह की जानकारी इकट्ठा करने और बैटरी खर्च होने की प्रक्रिया इस तरह से जुड़ी हुई है:
- सटीक जानकारी: जगह की सटीक जानकारी का डेटा. आम तौर पर, सटीक जानकारी पाने के लिए जितनी ज़्यादा बैटरी खर्च होगी, उतना ही सटीक डेटा मिलेगा.
- फ़्रीक्वेंसी: जगह की जानकारी कितनी बार कैलकुलेट की जाती है. जगह की जानकारी जितनी ज़्यादा बार कैलकुलेट की जाती है उतनी ही ज़्यादा बैटरी खर्च होती है.
- देरी: जगह की जानकारी का डेटा कितनी तेज़ी से डिलीवर किया जाता है. आम तौर पर, कम इंतज़ार का समय पाने के लिए ज़्यादा बैटरी की ज़रूरत होती है.
सटीक जानकारी
setPriority()
तरीके का इस्तेमाल करके, जगह की जानकारी की सटीकता तय की जा सकती है. इसके लिए, इनमें से किसी एक वैल्यू को आर्ग्युमेंट के तौर पर पास करें:
PRIORITY_HIGH_ACCURACY
से सबसे सटीक जगह की जानकारी मिलती है. इसे ज़रूरत के हिसाब से ज़्यादा से ज़्यादा इनपुट का इस्तेमाल करके कैलकुलेट किया जाता है. यह जीपीएस, वाई-फ़ाई, और सेल को चालू करता है. साथ ही, कई तरह के सेंसर का इस्तेमाल करता है. इससे बैटरी का ज़्यादा खर्च हो सकता है.PRIORITY_BALANCED_POWER_ACCURACY
, बैटरी की खपत को कम करते हुए जगह की सटीक जानकारी देता है. जीपीएस का इस्तेमाल बहुत कम करता है. आम तौर पर, डिवाइस की जगह का पता लगाने के लिए, वाई-फ़ाई और सेल की जानकारी का इस्तेमाल किया जाता है.PRIORITY_LOW_POWER
मुख्य रूप से सेल टावर पर निर्भर करता है और जीपीएस और वाई-फ़ाई इनपुट का इस्तेमाल नहीं करता. इससे बैटरी की खपत कम होती है और जगह की जानकारी का अनुमान (शहर के लेवल पर) कम सटीक होता है.PRIORITY_NO_POWER
को उन अन्य ऐप्लिकेशन से जगह की जानकारी अपने-आप मिलती है जिनके लिए जगह की जानकारी पहले से ही कैलकुलेट की जा चुकी है.
ज़्यादातर ऐप्लिकेशन की जगह की जानकारी की ज़रूरतों को पूरा करने के लिए, बैटरी की खपत को संतुलित करने या कम करने वाले विकल्पों का इस्तेमाल करें. फ़ोरग्राउंड में चलने वाले और रीयल टाइम में जगह की जानकारी के अपडेट की ज़रूरत वाले ऐप्लिकेशन के लिए, जगह की सटीक जानकारी का इस्तेमाल करें. उदाहरण के लिए, मैपिंग ऐप्लिकेशन.
फ़्रीक्वेंसी
जगह की फ़्रीक्वेंसी तय करने के लिए, दो तरीके इस्तेमाल किए जा सकते हैं:
- अपने ऐप्लिकेशन की जगह की जानकारी का हिसाब लगाने के लिए, इंटरवल तय करने के लिए
setinterval()
का इस्तेमाल करें. - अन्य ऐप्लिकेशन की जगह की जानकारी पाने के लिए, इंटरवल तय करने के लिए
setFastestInterval()
का इस्तेमाल करें.
setInterval()
का इस्तेमाल करते समय, सबसे बड़ी वैल्यू पास करें. यह बात खास तौर पर, बैकग्राउंड में जगह की जानकारी इकट्ठा करने के लिए ज़रूरी है. इससे अक्सर बैटरी खर्च होती है. फ़ोरग्राउंड में इस्तेमाल के उदाहरणों के लिए, कुछ सेकंड के इंटरवल तय करें.
Android 8.0 (एपीआई लेवल 26) में, बैकग्राउंड में जगह की जानकारी ऐक्सेस करने की सीमाएं तय की गई हैं. ये सीमाएं, इन रणनीतियों को लागू करती हैं. हालांकि, आपके ऐप्लिकेशन को Android 7.0 (एपीआई लेवल 24) और उससे पहले के वर्शन वाले डिवाइसों पर भी इन सीमाओं को लागू करना चाहिए.
इंतज़ार का समय
setMaxWaitTime()
तरीके का इस्तेमाल करके, इंतज़ार का समय तय किया जा सकता है. आम तौर पर, setInterval()
तरीके में तय किए गए इंटरवल से कई गुना ज़्यादा वैल्यू दी जाती है. इस सेटिंग की वजह से, जगह की जानकारी डिलीवर होने में देरी होती है. साथ ही, एक साथ कई जगह की जानकारी के अपडेट डिलीवर किए जा सकते हैं. इन दो बदलावों से, बैटरी की खपत कम करने में मदद मिलती है.
अगर आपके ऐप्लिकेशन को तुरंत जगह की जानकारी के अपडेट की ज़रूरत नहीं है, तो आपको setMaxWaitTime()
तरीके में ज़्यादा से ज़्यादा वैल्यू देनी चाहिए. इससे, ज़्यादा डेटा और बैटरी की खपत कम करने के लिए, इंतज़ार का समय कम हो जाता है.
जियोफ़ेंस का इस्तेमाल करते समय, ऐप्लिकेशन को बैटरी बचाने के लिए,
setNotificationResponsiveness()
तरीके में बड़ी वैल्यू पास करनी चाहिए. हमारा सुझाव है कि आप पांच मिनट या इससे ज़्यादा की वैल्यू डालें.
इसके बारे में और पढ़ें
ज़्यादा जानकारी के लिए, ये दस्तावेज़ देखें:
- सुझाव: इस गाइड में कुछ सुझाई गई कार्रवाइयां बताई गई हैं. इनका इस्तेमाल करके, ऐप्लिकेशन के बैटरी लाइफ़ पर पड़ने वाले असर को कम किया जा सकता है.
- इस्तेमाल के उदाहरण: इस गाइड में, जगह की जानकारी की सेवाओं के इस्तेमाल के कई सामान्य उदाहरण दिए गए हैं. इनमें यह भी बताया गया है कि इन उदाहरणों में, जगह की जानकारी की सेवाओं का इस्तेमाल कैसे किया जा सकता है और इनसे बैटरी लाइफ़ पर पड़ने वाले असर को कैसे ऑप्टिमाइज़ किया जा सकता है.