2012-09-21 37 views
6

मूल बाइंड/अनबिंड सेवा क्लाइंट द्वारा bindService()/unbindService() का उपयोग करके कॉल किया जा सकता है।एंड्रॉइड सर्विस बाध्य/अनबिंड के बारे में प्रश्न?

मेरा सवाल यह है कि सेवा पक्ष में सेवा को कैसे बाधित किया जाए, जिसे क्लाइंट द्वारा unbindService() नहीं कहा जाता है, शायद मुझे इसे unbindClient पर कॉल करना चाहिए।

मुझे लगता है कि सेवा को पता होना चाहिए कि कौन से ग्राहक इसके लिए बाध्य हैं, तो क्या किसी विशिष्ट ग्राहक को अनइंड करने के लिए सेवा बताने का कोई तरीका है?

क्योंकि मैं केवल सेवा लिखते हैं, और मैं do't अगर ग्राहक unbindService() सही ढंग से कॉल पता है, तो मैं इस सवाल है ..

+1

में कुछ उदाहरण लिया है जो आप अपनी कक्षाओं को पुन: स्थापित करने के लिए कुछ कर सकते हैं। आपको यह जानने की आवश्यकता क्यों है कि कौन से क्लाइंट सेवा से डिस्कनेक्ट हो गए हैं? –

+0

सामान्य सी/एस प्रोग्राम की तरह, मैं क्लाइंट डिस्कनेक्ट होने पर कुछ अंतर्निहित रीसायकल काम करना चाहता हूं, क्या आपके पास कोई बेहतर विचार है? – kwf2030

+0

क्या आप इसे 'गतिविधि' से कॉल कर सकते हैं जो 'सेवा' से डिस्कनेक्ट हो गया है? गतिविधियों के लिए 'onDestroy() 'विधि है, या' ऑन पॉज़()' या 'ऑनस्टॉप() '। आप इसे वहां रखने में सक्षम हो सकते हैं। –

उत्तर

0

आप ग्राहक कोड के लिए उपयोग किया है -

आप कॉल कर सकते हैं क्लाइंट से startService() - जो Activity से बाहर निकलने पर सेवा शुरू करेगा (और Service समाप्त नहीं करेगा - क्योंकि केवल stopService() इसे बंद कर देगा)।

और क्लाइंट bindService() पर कॉल कर सकता है - यदि वे Activity - Service इंटरैक्शन करना चाहते हैं।

बाहर निकलने/ग्राहक unbinding पर, सेवा अब भी चलेगा के बाद से startService() बुलाया गया था - Service अन्य कार्यों प्रदर्शन कर सकते हैं और फिर stopService() जो अपने आप को नष्ट कर देगा कहते हैं।

-1

एक सेवा स्वयं को अनदेखा नहीं कर सकती है। आप एक सेवा शुरू कर सकते हैं को stopSelf() के साथ ही रोकें।

ओएस दृश्यों के पीछे सभी बाध्यकारी और अनबाइंडिंग का ट्रैक रखता है। आपको ऑब्जेक्ट रीसाइक्लिंग के बारे में चिंता करने की ज़रूरत नहीं है, एंड्रॉइड यह आपके लिए करता है।

+0

यदि आपको लगता है कि उत्तर भ्रामक है। कृपया बताएं कि आप क्या सोचते हैं इसके साथ गलत है। – Wesam

0

यदि आप केवल उस कार्यक्षमता को सीमित करना चाहते हैं जो आपके द्वारा शुरू होने पर सेवा लौटाता है और bindService() कहा जाता है। आप क्लाइंट को पंजीकृत कर सकते हैं और सेवा के साथ पंजीकरण के दौरान पंजीकरण रद्द कर सकते हैं। इस तरह आपकी सेवा को बाध्यकारी नहीं होगा कोई प्रभाव नहीं। मैंने Remote Messenger Service उदाहरण से एंड्रॉइड वेबसाइट