2011-03-09 12 views
6

मैं सेवा जीवन चक्र के बारे में उलझन में हूं।
मैं निम्नलिखित कई सवाल है:सेवा का जीवन चक्र जो शुरू और बाध्य है?

  1. मेरे ऐप किसी सेवा पर startService() कई बार कॉल करता है, वहाँ हो जाएगा कई सेवाएं एक साथ चल? या केवल एक?

  2. पहले के रूप में, यदि मैं अपने ऐप में सेवा के लिए bindService() कई बार कॉल करता हूं, तो मेरे ऐप का क्या होगा?

  3. मान लें कि मेरे पास एक सेवा है जो startService() के माध्यम से शुरू की गई है, और उसके बाद मैं इसे कुछ करने के लिए निर्देश देने के लिए बाध्य करता हूं। इस मामले में, यदि मैं निर्देश देता हूं (इस बाइंडर इंटरफ़ेस के माध्यम से) सेवा को stopSelf() विधि निष्पादित करने के लिए, क्या चल रही सेवा तुरंत बंद हो जाती है?

  4. फिर मान लें मैं एक सेवा है कि केवल bindService() द्वारा शुरू किया जा सकता है, और onUnbind सच वापस जाने के लिए, इस मामले में ओवरराइड है, मैं सेवा बंद करने के लिए स्पष्ट रूप से stopSelf विधि बुलाना चाहिए?

उत्तर

-1

हां, आप एक साथ कई सेवाओं को चला सकते हैं। लेकिन अगर आप एक सेवा का उपयोग कर रहे हैं, तो आपको देखभाल के साथ ऐसा करना होगा। यदि आप एक सेवा शुरू कर रहे हैं, तो आपको onDestroy() या कस्टम विधि जैसी किसी भी विधि पर उस सेवा को रोकना होगा, क्योंकि जब भी आप अपनी गतिविधि पूरी करते हैं, तो सेवा अभी भी पृष्ठभूमि में चल रही है।

एक और बात: केवल तभी सेवा का उपयोग करें जब आपको मीडिया प्लेयर जैसी पृष्ठभूमि प्रक्रिया की आवश्यकता हो; अन्यथा, आप इन सभी को गतिविधि के साथ प्राप्त कर सकते हैं।

अधिक जानकारी के लिए पढ़ने के Android developer service document.

4
  1. केवल एक एक सेवा की एक उदाहरण एक Android डिवाइस पर मौजूद है। शुरू की गई सेवाएं केवल एक बार शुरू की जाती हैं, अन्य स्टार्ट कॉल के परिणामस्वरूप स्टार्ट कमांड पर बार-बार कॉल की जाएगी, लेकिन उसी सेवा के नए उदाहरण शुरू नहीं होंगे।

  2. यदि आप इसे बाध्यकारी करके बाध्य सेवा शुरू करते हैं, और यह सेवा का पहला उपयोग है, तो एक नया उदाहरण बनाया जाएगा और ऑनबिंड विधि को बुलाया जाएगा।

  3. हां। हालांकि सेवा द्वारा पंजीकृत सेवा और श्रोताओं द्वारा शुरू किए गए थ्रेड लीक हो जाएंगे। आपको इन संसाधनों का ध्यान ऑनस्ट्राय विधि पर रखना चाहिए।

  4. स्टॉप स्वयं को कॉल करने की आवश्यकता नहीं है। जब अंतिम उपयोगकर्ता सेवा से अनबिंड करता है, तो सेवा स्वचालित रूप से नष्ट हो जाती है।

संबंधित मुद्दे