फ़ोरग्राउंड सेवा के दस्तावेज़ में, Android फ़ोरग्राउंड सेवाओं के मौजूदा व्यवहार के बारे में बताया गया है. दस्तावेज़ में, ज़्यादातर ऐप्लिकेशन के लिए सबसे सही तरीकों के बारे में दिशा-निर्देश दिए गए हैं. भले ही, वे Android के नए वर्शन को टारगेट करते हों या नहीं.
इस पेज पर, फ़ोरग्राउंड सेवाओं से जुड़े कुछ सबसे नए और अहम बदलावों के बारे में बताया गया है. साथ ही, यह भी बताया गया है कि Android प्लैटफ़ॉर्म के सबसे नए वर्शन को टारगेट न करने वाले ऐप्लिकेशन पर इनका क्या असर पड़ेगा. कई मामलों में, एपीआई के निचले लेवल को टारगेट करने वाले ऐप्लिकेशन के लिए, सबसे सही तरीके (बेस्ट प्रैक्टिस) अपनाना ज़रूरी नहीं होता. हालांकि, एपीआई के ऊपरी लेवल को टारगेट करने वाले ऐप्लिकेशन के लिए, ऐसा करना ज़रूरी होता है.
Android 16 (एपीआई लेवल 36)
नीचे दिए गए बदलाव, Android 16 या इसके बाद के वर्शन पर काम करने वाले ऐप्लिकेशन पर लागू होते हैं. भले ही, वे किसी भी एपीआई लेवल को टारगेट करते हों:
फ़ोरग्राउंड सेवा से शुरू किए गए बैकग्राउंड जॉब को अब अपने-अपने रनटाइम कोटा का पालन करना होगा. इसमें
JobSchedulerका इस्तेमाल करके सीधे तौर पर शेड्यूल की गई नौकरियां शामिल हैं. साथ ही, इसमें WorkManager याDownloadManagerजैसी अन्य लाइब्रेरी से बनाई गई नौकरियां भी शामिल हैं.उपयोगकर्ता की कार्रवाई के जवाब में डेटा ट्रांसफ़र करने के लिए, User-initiated data transfer job का इस्तेमाल करें. इन नौकरियों को सामान्य नौकरी के कोटे से छूट मिली हुई है.
Android 15 (एपीआई लेवल 35)
एपीआई लेवल 35 या उसके बाद के लेवल को टारगेट करने वाले ऐप्लिकेशन पर ये ज़रूरी शर्तें लागू होती हैं:
dataSyncफ़ोरग्राउंड सर्विस के चलने की अवधि पर नई पाबंदियां लगाई गई हैं. इन पाबंदियों के बारे में, फ़ोरग्राउंड सेवा के टाइम आउट होने के बारे में जानकारी लेख में बताया गया है. इसी तरह की पाबंदियां,mediaProcessingफ़ोरग्राउंड सेवा के टाइप पर भी लागू होती हैं. यह टाइप, Android 15 में नया है.BOOT_COMPLETEDफ़ोरग्राउंड सेवाओं को अब कुछ फ़ोरग्राउंड सेवाएं लॉन्च करने की अनुमति नहीं है.SYSTEM_ALERT_WINDOWअनुमति वाले ऐप्लिकेशन, बैकग्राउंड से फ़ोरग्राउंड सेवाएं सिर्फ़ तब लॉन्च कर सकते हैं, जब फ़िलहाल उनके पास दिखने वाली ओवरले विंडो हो. इसके अलावा, वे ऐसा तब भी कर सकते हैं, जब वे बैकग्राउंड से फ़ोरग्राउंड सेवाएं लॉन्च करने से जुड़ी पाबंदियों से छूट की किसी एक शर्त को पूरा करते हों. पहले, इन ऐप्लिकेशन के लिए छूट का दायरा ज़्यादा था.
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 दिखाता है.