"यदि आप startService(..)
उस सेवा के साथ एक Android सेवा शुरू करते हैं, जब तक कि आप स्पष्ट रूप से आह्वान नहीं करते हैं, तब तक सेवा चलती रहेगी stopService(..)
। दो कारण हैं कि एक सेवा को सिस्टम द्वारा चलाया जा सकता है। यदि कोई व्यक्ति कॉल करता है, Context.startService()
तो सिस्टम सेवा को पुनः प्राप्त करेगा (इसे बनाएगा और इसकी onCreate()
विधि को कॉल करेगा यदि जरूरत है) और फिर अपने फोन onStartCommand(Intent, int, int)
तर्क ग्राहक द्वारा आपूर्ति के साथ विधि। सेवा करेंगे इस बिंदु पर जब तक प्रदर्शन जारी रहे, Context.stopService()
या stopSelf()
कहा जाता है। ध्यान दें कि कई कॉल करने के लिए Context.startService()
घोंसला नहीं है (हालांकि वे कई इसी के लिए कॉल में परिणाम कर onStartCommand()
), इसलिए कोई कोई बात नहीं कितनी बार यह सेवा शुरू की है एक बार बंद कर दिया है Context.stopService()
या stopSelf()
कहा जाता है, हालांकि, सेवाओं का उपयोग कर सकते हैंstopSelf(int)
सेवा को सुनिश्चित करने की विधि तब तक बंद नहीं की जाती है जब तक कि इंटेंट को संसाधित नहीं किया जाता है।
ग्राहक Context.bindService()
किसी सेवा के लिए लगातार कनेक्शन प्राप्त करने के लिए भी उपयोग कर सकते हैं । यह वैसे ही सेवा बनाता है यदि यह पहले से ही नहीं चल रहा है ( onCreate()
ऐसा करते समय कॉलिंग ), लेकिन कॉल नहीं करता है onStartCommand()
। क्लाइंट को वह IBinder
वस्तु प्राप्त होगी जो सेवा अपने onBind(Intent)
तरीके से वापस आती है , जिससे ग्राहक को फिर से सेवा में कॉल करने की अनुमति मिलती है। जब तक कनेक्शन स्थापित है (चाहे ग्राहक सेवा पर एक संदर्भ रखता है IBinder
) तब तक सेवा चालू रहेगी । आमतौर पर IBinder
लौटा एक जटिल इंटरफ़ेस के लिए है जिसे एआईडीएल में लिखा गया है।
एक सेवा दोनों शुरू की जा सकती है और इसके लिए बाध्य कनेक्शन हो सकते हैं। ऐसे मामले में, सिस्टम सेवा को तब तक चालू रखेगा जब तक या तो इसे शुरू किया जाता है या Context.BIND_AUTO_CREATE
ध्वज के साथ इसके एक या अधिक कनेक्शन होते हैं । एक बार जब इनमें से कोई भी स्थिति पकड़ में नहीं आती है, तो सेवा का onDestroy()
तरीका कहा जाता है और सेवा को प्रभावी रूप से समाप्त कर दिया जाता है। सभी क्लीनअप (थ्रेड्स को अनरजिस्टर्ड रिसीवर्स को रोकना) से लौटने पर पूरा होना चाहिए onDestroy()
। "