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