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