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

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

ध्यान दें: ये सीमाएं, Android 8.0 (एपीआई लेवल 26) या इसके बाद के वर्शन वाले डिवाइसों पर इस्तेमाल किए जाने वाले सभी ऐप्लिकेशन पर लागू होती हैं. इससे कोई फ़र्क़ नहीं पड़ता कि ऐप्लिकेशन के लिए टारगेट किया गया SDK टूल का वर्शन क्या है.

जगह की जानकारी हासिल करने के इस व्यवहार को ध्यान में रखना तब ज़्यादा ज़रूरी होता है, जब आपका ऐप्लिकेशन बैकग्राउंड में चलने के दौरान, रीयल-टाइम सूचनाओं या मोशन डिटेक्शन पर निर्भर हो.

फ़ोरग्राउंड ऐप्लिकेशन का व्यवहार सुरक्षित रखा जाता है

अगर कोई ऐप्लिकेशन, Android 8.0 (एपीआई लेवल 26) पर चलने वाले डिवाइस पर फ़ोरग्राउंड में है, तो जगह की जानकारी अपडेट करने का तरीका, Android 7.1.1 (एपीआई लेवल 25) और उससे पहले के वर्शन पर चलने वाले डिवाइसों पर अपडेट करने के तरीके जैसा ही होगा.

चेतावनी: अगर आपका ऐप्लिकेशन लंबे समय तक जगह की जानकारी के रीयल-टाइम अपडेट हासिल करता है, तो डिवाइस की बैटरी लाइफ़ काफ़ी कम हो जाती है.

अपने ऐप्लिकेशन की जगह की जानकारी के इस्तेमाल के तरीके को बेहतर बनाना

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

  • अपने ऐप्लिकेशन को फ़ोरग्राउंड में लाएं.
  • startForegroundService() को कॉल करके, अपने ऐप्लिकेशन में फ़ोरग्राउंड सेवा शुरू करें. जब ऐसी फ़ोरग्राउंड सेवा चालू होती है, तो वह सूचना वाली जगह में, चल रही सूचना के तौर पर दिखती है.

    चेतावनी: अगर आपका ऐप्लिकेशन, Android 11 (एपीआई लेवल 30) या इसके बाद के वर्शन वाले डिवाइस पर बैकग्राउंड में चलने के दौरान, फ़ोरग्राउंड सेवा शुरू करता है, तो आपका ऐप्लिकेशन तब तक जगह की जानकारी ऐक्सेस नहीं कर सकता, जब तक उपयोगकर्ता ने आपके ऐप्लिकेशन को ACCESS_BACKGROUND_LOCATION अनुमति न दी हो. ज़्यादा जानकारी के लिए, फ़ोरग्राउंड सेवाओं से जुड़ी इस्तेमाल के दौरान लगी पाबंदियों के बारे में दिशा-निर्देश देखें.

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

ध्यान दें: अगर आपके ऐप्लिकेशन को जगह की जानकारी के ऐसे इतिहास का ऐक्सेस चाहिए जिसमें समय-समय पर अपडेट होते रहते हैं, तो Fused Location Provider API एलिमेंट के एक साथ कई अनुरोध करने वाले वर्शन का इस्तेमाल करें. जैसे, FusedLocationProviderApi इंटरफ़ेस. जब आपका ऐप्लिकेशन बैकग्राउंड में चल रहा होता है, तो यह एपीआई, बिना बैच वाले एपीआई की तुलना में उपयोगकर्ता की जगह की जानकारी ज़्यादा बार पाता है. हालांकि, ध्यान रखें कि आपके ऐप्लिकेशन को अब भी हर घंटे में सिर्फ़ कुछ बार, एक साथ कई अपडेट मिलते हैं.

जिन एपीआई पर असर पड़ा है

बैकग्राउंड में काम करने वाले ऐप्लिकेशन में, जगह की जानकारी हासिल करने के तरीके में किए गए बदलावों का असर इन एपीआई पर पड़ता है:

कई तरह से जांची गई सही जगह की जानकारी देने वाला एपीआई (एफ़एलपी)
  • अगर आपका ऐप्लिकेशन बैकग्राउंड में चल रहा है, तो जगह की जानकारी देने वाली सिस्टम सेवा, आपके ऐप्लिकेशन के लिए हर घंटे में सिर्फ़ कुछ समय के लिए नई जगह का हिसाब लगाती है. ऐसा तब भी होता है, जब आपका ऐप्लिकेशन जगह की जानकारी के ज़्यादा अपडेट का अनुरोध कर रहा हो.

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

  • अगर आपका ऐप्लिकेशन फ़ोरग्राउंड में चल रहा है, तो Android 7.1.1 (एपीआई लेवल 25) की तुलना में, जगह की जानकारी के सैंपलिंग रेट में कोई बदलाव नहीं होता.
जियोफ़ेंसिंग
  • बैकग्राउंड ऐप्लिकेशन को, फ़्यूज़्ड लोकेशन प्रोवाइडर से मिलने वाले अपडेट की तुलना में, ज़्यादा बार जगह की जानकारी के आधार पर ट्रांज़िशन इवेंट मिल सकते हैं.
  • जियोफ़ेंसिंग इवेंट के लिए, रिस्पॉन्स मिलने में औसतन दो मिनट या उससे ज़्यादा लगते हैं.
जीएनएसएस मेज़रमेंट और जीएनएसएस नेविगेशन मैसेज
  • जब आपका ऐप्लिकेशन बैकग्राउंड में होता है, तो GnssMeasurement और GnssNavigationMessage से आउटपुट पाने के लिए रजिस्टर किए गए कॉलबैक, काम करना बंद कर देते हैं.
लोकेशन मैनेजर
  • बैकग्राउंड में चल रहे ऐप्लिकेशन को जगह की जानकारी के अपडेट, हर घंटे में सिर्फ़ कुछ बार दिए जाते हैं.

    ध्यान दें: अगर आपका ऐप्लिकेशन ऐसे डिवाइस पर चल रहा है जिस पर Google Play services इंस्टॉल है, तो हमारा सुझाव है कि आप इसके बजाय, फ़्यूज़्ड लोकेशन प्रोवाइडर (एफ़एलपी) का इस्तेमाल करें.

वाई-फ़ाई मैनेजर
startScan() तरीके से, बैकग्राउंड में चल रहे ऐप्लिकेशन का पूरा स्कैन हर घंटे सिर्फ़ कुछ ही बार किया जाता है. अगर कोई बैकग्राउंड ऐप्लिकेशन, इसके तुरंत बाद फिर से इस तरीके को कॉल करता है, तो WifiManager क्लास, पिछले स्कैन से कैश मेमोरी में सेव किए गए नतीजे दिखाती है.