फ़ोरग्राउंड सेवाओं में किए गए बदलाव

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

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

Android 16 (एपीआई लेवल 36)

नीचे दिए गए बदलाव, Android 16 या इसके बाद के वर्शन पर काम करने वाले ऐप्लिकेशन पर लागू होते हैं. भले ही, वे किसी भी एपीआई लेवल को टारगेट करते हों:

  • फ़ोरग्राउंड सेवा से शुरू किए गए बैकग्राउंड जॉब को अब अपने-अपने रनटाइम कोटा का पालन करना होगा. इसमें JobScheduler का इस्तेमाल करके सीधे तौर पर शेड्यूल की गई नौकरियां शामिल हैं. साथ ही, इसमें WorkManager या DownloadManager जैसी अन्य लाइब्रेरी से बनाई गई नौकरियां भी शामिल हैं.

    उपयोगकर्ता की कार्रवाई के जवाब में डेटा ट्रांसफ़र करने के लिए, User-initiated data transfer job का इस्तेमाल करें. इन नौकरियों को सामान्य नौकरी के कोटे से छूट मिली हुई है.

Android 15 (एपीआई लेवल 35)

एपीआई लेवल 35 या उसके बाद के लेवल को टारगेट करने वाले ऐप्लिकेशन पर ये ज़रूरी शर्तें लागू होती हैं:

Android 14 (एपीआई लेवल 34)

एपीआई लेवल 34 या उसके बाद के लेवल को टारगेट करने वाले ऐप्लिकेशन के लिए, ये ज़रूरी शर्तें लागू होती हैं:

  • आपको सेवा के टाइप के साथ, सभी फ़ोरग्राउंड सेवाओं के बारे में बताना होगा.
  • ऐप्लिकेशन को उस तरह के काम के लिए सही अनुमति का अनुरोध करना होगा जो फ़ोरग्राउंड सेवा करेगी. हर फ़ोरग्राउंड सेवा के टाइप के लिए, अनुमति का एक टाइप होता है. उदाहरण के लिए, अगर कोई ऐप्लिकेशन ऐसी फ़ोरग्राउंड सेवा लॉन्च करता है जो कैमरे का इस्तेमाल करती है, तो आपको FOREGROUND_SERVICE और FOREGROUND_SERVICE_CAMERA, दोनों अनुमतियों का अनुरोध करना होगा. अगर कोई ऐप्लिकेशन, एपीआई लेवल 34 या उसके बाद के वर्शन को टारगेट करता है और ज़रूरी अनुमति का अनुरोध नहीं करता है, तो सिस्टम SecurityException दिखाता है.

Android 12 (एपीआई लेवल 31)

एपीआई लेवल 31 या उसके बाद के लेवल को टारगेट करने वाले ऐप्लिकेशन के लिए, ये ज़रूरी शर्तें लागू होती हैं:

Android 11 (एपीआई लेवल 30)

एपीआई लेवल 30 या उसके बाद के लेवल को टारगेट करने वाले ऐप्लिकेशन के लिए, ये ज़रूरी शर्तें लागू होती हैं:

  • अगर किसी ऐप्लिकेशन की फ़ोरग्राउंड सेवाएं, कैमरे या माइक्रोफ़ोन का इस्तेमाल करती हैं, तो ऐप्लिकेशन को camera या microphone सेवा टाइप के साथ, सेवा का एलान करना होगा.

Android 10 (एपीआई लेवल 29)

एपीआई लेवल 29 या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, ये ज़रूरी शर्तें लागू होती हैं:

  • अगर किसी ऐप्लिकेशन की फ़ोरग्राउंड सेवाएं, जगह की जानकारी का इस्तेमाल करती हैं, तो ऐप्लिकेशन को location सेवा टाइप के साथ सेवा का एलान करना होगा.

Android 9 (एपीआई लेवल 28)

Android 9 में FOREGROUND_SERVICE अनुमति की सुविधा जोड़ी गई है. Android 9 पर चलने वाले ऐसे ऐप्लिकेशन जो फ़ोरग्राउंड सेवाओं का इस्तेमाल करते हैं उनके पास यह अनुमति होनी चाहिए.

अगर एपीआई लेवल 28 या उसके बाद के वर्शन को टारगेट करने वाला कोई ऐप्लिकेशन, FOREGROUND_SERVICE अनुमति के लिए अनुरोध किए बिना फ़ोरग्राउंड सेवा बनाने की कोशिश करता है, तो सिस्टम एक SecurityException दिखाता है.