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