जगह की जानकारी की सेवाओं का इस्तेमाल करते समय, डिवाइस की बैटरी लाइफ़ पर ऐप्लिकेशन के असर को कम करने के लिए, ये कार्रवाइयां करें.
जगह की जानकारी के अपडेट हटाना
बैटरी की खपत ज़्यादा होने की एक आम वजह यह है कि जगह की जानकारी के अपडेट हटाने का विकल्प नहीं चुना गया हो.
ऐसा तब हो सकता है, जब किसी ऐक्टिविटी के onStart()
या onResume()
लाइफ़साइकल मैथड में requestlocationUpdates()
को कॉल किया गया हो, लेकिन onPause()
या onStop()
लाइफ़साइकल मैथड में removeLocationUpdates()
को कॉल न किया गया हो.
अपने ऐप्लिकेशन में ऐक्टिविटी के लाइफ़साइकल को बेहतर तरीके से मैनेज करने के लिए, लाइफ़साइकल की जानकारी वाले कॉम्पोनेंट का इस्तेमाल किया जा सकता है. ज़्यादा जानकारी के लिए, लाइफ़साइकल की जानकारी वाले कॉम्पोनेंट की मदद से लाइफ़साइकल मैनेज करना लेख पढ़ें.
टाइम आउट सेट करना
बैटरी खत्म होने से बचाने के लिए, जगह की जानकारी के अपडेट बंद होने का समय तय करें. टाइम आउट की सुविधा से यह पक्का होता है कि अपडेट कभी खत्म न हों. साथ ही, यह उन स्थितियों में ऐप्लिकेशन को सुरक्षित रखती है जहां अपडेट का अनुरोध किया गया है, लेकिन उन्हें हटाया नहीं गया है. उदाहरण के लिए, कोड में गड़बड़ी की वजह से.
फ़्यूज़्ड लोकेशन की जानकारी देने वाली सेवा के अनुरोध के लिए, setExpirationDuration()
को कॉल करके टाइम आउट जोड़ें. इससे एक पैरामीटर मिलता है, जो आखिरी बार कॉल किए जाने के बाद से, समय को मिलीसेकंड में दिखाता है. setExpirationTime()
को कॉल करके भी टाइम आउट जोड़ा जा सकता है. इसमें एक पैरामीटर मिलता है, जो सिस्टम के आखिरी बार बूट होने के बाद, समयसीमा खत्म होने का समय मिलीसेकंड में दिखाता है.
जियोफ़ेंस की जगह की जानकारी के अनुरोध में टाइम आउट जोड़ने के लिए, setExpirationDuration()
तरीका कॉल करें.
एक साथ कई अनुरोध करना
फ़ोरग्राउंड के अलावा, अन्य सभी इस्तेमाल के उदाहरणों के लिए, एक साथ कई अनुरोध भेजें. setInterval()
तरीके का इस्तेमाल करके, वह इंटरवल तय करें जिसके लिए आपको जगह की जानकारी का हिसाब लगाना है. इसके बाद, setMaxWaitTime()
तरीके का इस्तेमाल करके, वह इंटरवल सेट करें जिसमें आपके ऐप्लिकेशन को जगह की जानकारी डिलीवर की जाती है. setMaxWaitTime()
तरीके में ऐसी वैल्यू पास करें जो setInterval()
तरीके में पास की गई वैल्यू से कई गुनी हो. उदाहरण के लिए, जगह की जानकारी के लिए किया गया यह अनुरोध देखें:
Kotlin
val request = LocationRequest()
request.setInterval(10 * 60 * 1000)
request.setMaxWaitTime(60 * 60 * 1000)
Java
LocationRequest request = new LocationRequest();
request.setInterval(10 * 60 * 1000);
request.setMaxWaitTime(60 * 60 * 1000);
इस मामले में, सिस्टम हर 10 मिनट में जगह की जानकारी का हिसाब लगाता है और हर घंटे एक बैच में जगह की जानकारी के करीब छह डेटा पॉइंट डिलीवर करता है. आपको अब भी जगह की जानकारी हर 10 मिनट या उससे कम समय में अपडेट मिलती रहेगी. हालांकि, इससे आपकी बैटरी बचती है, क्योंकि आपका डिवाइस हर घंटे या उससे कम समय में ही चालू होता है.
जगह की जानकारी के अपडेट का इस्तेमाल करना
बैकग्राउंड में इस्तेमाल के उदाहरणों में, जगह की जानकारी के अपडेट को कम करना अच्छा होता है. Android 8.0 (एपीआई लेवल 26) की सीमाएं, इस प्रैक्टिस को लागू करती हैं. हालांकि, कम वर्शन वाले डिवाइसों पर काम करने वाले ऐप्लिकेशन को बैकग्राउंड में जगह की जानकारी का इस्तेमाल कम से कम करना चाहिए.
ऐसा हो सकता है कि आपका ऐप्लिकेशन बैकग्राउंड में हो, लेकिन कोई दूसरा ऐप्लिकेशन फ़ोरग्राउंड में अक्सर जगह की जानकारी अपडेट करने का अनुरोध कर रहा हो. जगह की जानकारी से जुड़ी सेवाएं, आपके ऐप्लिकेशन के लिए ये अपडेट उपलब्ध कराती हैं. जगह की जानकारी के लिए किए गए इस अनुरोध पर ध्यान दें, जो मौके के हिसाब से जगह की जानकारी का डेटा इस्तेमाल करती है:
Kotlin
val request = LocationRequest()
request.setInterval(15 * 60 * 1000)
request.setFastestInterval(2 * 60 * 1000)
Java
LocationRequest request = new LocationRequest();
request.setInterval(15 * 60 * 1000);
request.setFastestInterval(2 * 60 * 1000);
पिछले उदाहरण में, ऐप्लिकेशन की जगह की जानकारी हर 15 मिनट में अपडेट होती है. अगर अन्य ऐप्लिकेशन जगह की जानकारी का अनुरोध करते हैं, तो ऐप्लिकेशन को डेटा, ज़्यादा से ज़्यादा दो मिनट के अंतराल पर मिलता है.
जगह की जानकारी को ऐक्सेस करने पर, बैटरी की खपत नहीं होती. हालांकि, ऐसे मामलों में ज़्यादा ध्यान रखें जहां जगह की जानकारी मिलने पर, सीपीयू या I/O के ज़्यादा खर्च वाले ऑपरेशन ट्रिगर होते हैं. बैटरी की लागत कम करने के लिए, setFastestInterval()
में तय किया गया इंटरवल बहुत कम नहीं होना चाहिए.