<सेवा>

सिंटैक्स:
<service android:description="string resource"
         android:directBootAware=["true" | "false"]
         android:enabled=["true" | "false"]
         android:exported=["true" | "false"]
         android:foregroundServiceType=["camera" | "connectedDevice" |
                                        "dataSync" | "health" | "location" |
                                        "mediaPlayback" | "mediaProjection" |
                                        "microphone" | "phoneCall" |
                                        "remoteMessaging" | "shortService" |
                                        "specialUse" | "systemExempted"]
         android:icon="drawable resource"
         android:isolatedProcess=["true" | "false"]
         android:label="string resource"
         android:name="string"
         android:permission="string"
         android:process="string"
         android:stopWithTask=["true" | "false"]>
    ...
</service>
इनमें शामिल है:
<application>
इसमें ये चीज़ें शामिल हो सकती हैं:
<intent-filter>
<meta-data>
जानकारी:
किसी सेवा, Service सबक्लास को ऐप्लिकेशन के कॉम्पोनेंट के तौर पर बताता है. गतिविधियों के मुकाबले, सेवाओं में विज़ुअल यूज़र इंटरफ़ेस नहीं होता. इनका इस्तेमाल, बैकग्राउंड में लंबे समय तक चलने वाले ऑपरेशन या रिच कम्यूनिकेशन एपीआई को लागू करने के लिए किया जाता है. इस एपीआई को दूसरे ऐप्लिकेशन कॉल कर सकते हैं.

सभी सेवाओं को मेनिफ़ेस्ट फ़ाइल में <service> एलिमेंट से दिखाया जाना चाहिए. जिन विज्ञापनों के लिए यह एट्रिब्यूट नहीं दिया जाता है उन्हें सिस्टम नहीं देखता और वे कभी नहीं चलते.

ध्यान दें: Android 8.0 (एपीआई लेवल 26) और इसके बाद के वर्शन पर, सिस्टम यह तय करता है कि बैकग्राउंड में चलने के दौरान आपका ऐप्लिकेशन क्या-क्या कर सकता है. ज़्यादा जानकारी के लिए, बैकग्राउंड में टास्क लागू करने की सीमाओं और बैकग्राउंड में जगह की जानकारी ऐक्सेस करने की सीमाओं के बारे में बताने वाली गाइड देखें.

एट्रिब्यूट:
android:description
इस स्ट्रिंग में, सेवा के बारे में ऐसी जानकारी होती है जिसे कोई भी व्यक्ति आसानी से पढ़ सकता है. ब्यौरा, स्ट्रिंग संसाधन के रेफ़रंस के तौर पर सेट किया जाता है, ताकि इसे यूज़र इंटरफ़ेस में मौजूद अन्य स्ट्रिंग की तरह स्थानीय भाषा में अनुवाद किया जा सके.
android:directBootAware

सेवा डायरेक्ट-बूट के बारे में जानकारी रखती है या नहीं. इसका मतलब है कि उपयोगकर्ता के डिवाइस को अनलॉक करने से पहले, यह सेवा चल सकती है या नहीं.

ध्यान दें: डायरेक्ट बूट के दौरान, आपके ऐप्लिकेशन में मौजूद कोई सेवा सिर्फ़ उस डेटा को ऐक्सेस कर सकती है जो डिवाइस के सुरक्षित स्टोरेज में सेव किया गया है.

डिफ़ॉल्ट वैल्यू "false" है.

android:enabled
क्या सिस्टम, सेवा को इंस्टैंशिएट कर सकता है. अगर ऐसा किया जा सकता है, तो "true" डालें और अगर नहीं, तो "false" डालें. डिफ़ॉल्ट वैल्यू "true" है.

<application> एलिमेंट का अपना enabled एट्रिब्यूट होता है. यह एट्रिब्यूट, सेवाओं के साथ-साथ सभी ऐप्लिकेशन कॉम्पोनेंट पर लागू होता है. सेवा चालू करने के लिए, <application> और <service> एट्रिब्यूट की वैल्यू "true" होनी चाहिए, क्योंकि ये दोनों एट्रिब्यूट डिफ़ॉल्ट रूप से "true" पर सेट होते हैं. अगर कोई भी "false" है, तो सेवा बंद है और उसे इंस्टैंशिएट नहीं किया जा सकता.

android:exported
क्या अन्य ऐप्लिकेशन के कॉम्पोनेंट, सेवा को शुरू कर सकते हैं या उससे इंटरैक्ट कर सकते हैं. अगर ऐसा किया जा सकता है, तो "true" डालें और अगर नहीं, तो "false" डालें. जब वैल्यू "false" होती है, तो सिर्फ़ एक ही ऐप्लिकेशन या एक ही यूज़र आईडी वाले ऐप्लिकेशन के कॉम्पोनेंट ही सेवा को शुरू कर सकते हैं या उससे बंधे रह सकते हैं.

डिफ़ॉल्ट वैल्यू इस बात पर निर्भर करती है कि सेवा में इंटेंट फ़िल्टर शामिल हैं या नहीं. किसी भी फ़िल्टर के न होने का मतलब है कि इसे सिर्फ़ क्लास के सटीक नाम का इस्तेमाल करके ही शुरू किया जा सकता है. इसका मतलब है कि सेवा का मकसद सिर्फ़ ऐप्लिकेशन के अंदर इस्तेमाल करना है, क्योंकि दूसरे लोगों को क्लास का नाम नहीं पता है. इसलिए, इस मामले में डिफ़ॉल्ट वैल्यू "false" है. दूसरी ओर, कम से कम एक फ़िल्टर मौजूद होने का मतलब है कि सेवा का इस्तेमाल बाहरी लोगों के लिए किया जाना है. इसलिए, डिफ़ॉल्ट वैल्यू "true" है.

किसी सेवा को दूसरे ऐप्लिकेशन के लिए सीमित करने का यह एकमात्र तरीका नहीं है. अनुमति का इस्तेमाल करके, सेवा के साथ इंटरैक्ट करने वाली बाहरी इकाइयों को सीमित किया जा सकता है. permission एट्रिब्यूट देखें.

android:foregroundServiceType

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

किसी सेवा को फ़ोरग्राउंड सेवा के एक से ज़्यादा टाइप असाइन किए जा सकते हैं.

android:icon
सेवा को दिखाने वाला आइकॉन. इस एट्रिब्यूट को, इमेज की परिभाषा वाले ड्रॉबल ऐसेट के रेफ़रंस के तौर पर सेट किया जाता है. अगर यह सेट नहीं है, तो इसके बजाय पूरे ऐप्लिकेशन के लिए तय किए गए आइकॉन का इस्तेमाल किया जाता है. <application> एलिमेंट का icon एट्रिब्यूट देखें.

सेवा का आइकॉन, यहां या <application> एलिमेंट से सेट किया गया हो, यह सेवा के सभी इंटेंट फ़िल्टर के लिए डिफ़ॉल्ट आइकॉन भी होता है. <intent-filter> एलिमेंट का icon एट्रिब्यूट देखें.

android:isolatedProcess
अगर इसे "true" पर सेट किया जाता है, तो यह सेवा एक खास प्रोसेस के तहत काम करती है. यह प्रोसेस, सिस्टम के बाकी हिस्सों से अलग होती है और इसके पास कोई अनुमति नहीं होती. इसके साथ सिर्फ़ Service API के ज़रिए कम्यूनिकेशन किया जा सकता है. इसमें, बाइंडिंग और शुरू करने की सुविधा शामिल है.
android:label
सेवा का ऐसा नाम जिसे उपयोगकर्ता पढ़ सके. अगर यह एट्रिब्यूट सेट नहीं है, तो पूरे ऐप्लिकेशन के लिए सेट किए गए लेबल का इस्तेमाल किया जाता है. <application> एलिमेंट का label एट्रिब्यूट देखें.

सेवा का लेबल, चाहे यहां सेट किया गया हो या <application> एलिमेंट से, यह सेवा के सभी इंटेंट फ़िल्टर के लिए डिफ़ॉल्ट लेबल भी होता है. <intent-filter> एलिमेंट का label एट्रिब्यूट देखें.

लेबल को स्ट्रिंग रिसॉर्स के रेफ़रंस के तौर पर सेट किया जाता है, ताकि इसे यूज़र इंटरफ़ेस में मौजूद अन्य स्ट्रिंग की तरह स्थानीय भाषा में अनुवाद किया जा सके. हालांकि, ऐप्लिकेशन डेवलप करते समय, इसे रॉ स्ट्रिंग के तौर पर भी सेट किया जा सकता है.

android:name
सेवा को लागू करने वाले Service सबक्लास का नाम. यह पूरी तरह क्वालिफ़ाइड क्लास का नाम है, जैसे कि "com.example.project.RoomService". हालांकि, अगर नाम का पहला वर्ण पीरियड है, जैसे कि ".RoomService", तो इसे <manifest> एलिमेंट में दिए गए पैकेज के नाम में जोड़ दिया जाता है.

ऐप्लिकेशन पब्लिश करने के बाद, android:exported="false" सेट करने से पहले इस नाम को बदलें.

कोई डिफ़ॉल्ट नहीं है. नाम डालना ज़रूरी है.

android:permission
किसी अनुमति का नाम, जिसकी ज़रूरत किसी इकाई को सेवा को लॉन्च करने या उससे बाइंड करने के लिए होती है. अगर startService(), bindService() या stopService() के कॉलर को यह अनुमति नहीं दी गई है, तो यह तरीका काम नहीं करता और सेवा को Intent ऑब्जेक्ट डिलीवर नहीं किया जाता.

अगर यह एट्रिब्यूट सेट नहीं है, तो सेवा पर <application> एलिमेंट के permission एट्रिब्यूट से सेट की गई अनुमति लागू होती है. अगर कोई भी एट्रिब्यूट सेट नहीं है, तो इसका मतलब है कि सेवा को अनुमति से सुरक्षित नहीं किया गया है.

अनुमतियों के बारे में ज़्यादा जानने के लिए, ऐप्लिकेशन मेनिफ़ेस्ट की खास जानकारी में अनुमतियां सेक्शन और सुरक्षा से जुड़े दिशा-निर्देश देखें.

android:process
उस प्रोसेस का नाम जहां सेवा चलती है. आम तौर पर, किसी ऐप्लिकेशन के सभी कॉम्पोनेंट, उस ऐप्लिकेशन के लिए बनाई गई डिफ़ॉल्ट प्रोसेस में चलते हैं. इसका नाम, ऐप्लिकेशन पैकेज के नाम जैसा ही होता है. <application> एलिमेंट के process एट्रिब्यूट की मदद से, सभी कॉम्पोनेंट के लिए अलग-अलग डिफ़ॉल्ट वैल्यू सेट की जा सकती है. हालांकि, कोई कॉम्पोनेंट अपने process एट्रिब्यूट की मदद से, डिफ़ॉल्ट वैल्यू को बदल सकता है. इससे, आपको अपने ऐप्लिकेशन को कई प्रोसेस में इस्तेमाल करने की सुविधा मिलती है.

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

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

android:stopWithTask
अगर इस एट्रिब्यूट को "true" पर सेट किया जाता है, तो जब उपयोगकर्ता किसी ऐसे टास्क को हटाता है जो ऐप्लिकेशन के मालिकाना हक वाली गतिविधि से जुड़ा होता है, तो सिस्टम सेवा को अपने-आप बंद कर देता है. डिफ़ॉल्ट वैल्यू "false" है.
यह भी देखें:
<application>
<activity>
पहली बार इसमें दिखाया गया:
एपीआई लेवल 1