2012-02-14 16 views
12

मैं एक ऐसा एप्लिकेशन बना रहा हूं जो एंड्रॉइड पर एक्सएमपीपी सर्वर से जुड़ता है। जब तक उपयोगकर्ता लॉग आउट नहीं करता तब तक मैं कनेक्शन रखना चाहता हूं।सेवा या बाउंड सेवा?

क्या मुझे कनेक्शन रखने के लिए नियमित सेवा या बाउंड सेवा का उपयोग करना चाहिए?

कोई सुझाव, सलाह और सहायक जानकारी का स्वागत है।

उत्तर

3

क्लाइंट-सर्वर इंटरफ़ेस में एक बाध्य सेवा सर्वर है। एक बाध्य सेवा घटक (जैसे गतिविधियों) को सेवा से जुड़ने, अनुरोध भेजने, प्रतिक्रिया प्राप्त करने और यहां तक ​​कि इंटरप्रोसेस संचार (आईपीसी) करने की अनुमति देती है। एक बाध्य सेवा आम तौर पर केवल तब होती है जब यह किसी अन्य अनुप्रयोग घटक की सेवा करती है और पृष्ठभूमि में अनिश्चित काल तक नहीं चलती है।

सभी कोड उपयोगकर्ता उपयोगकर्ता लॉगआउट से जुड़े से एक गतिविधि में मौजूद है तो बाध्य सेवा

के लिए जाते हैं लेकिन

+0

धन्यवाद ** उपयोगकर्ता 1203673 **, मैंने दोनों के बीच अंतर और इसका उपयोग कब किया। यदि आप सेवा के साथ बातचीत करना चाहते हैं (उदाहरण के लिए तर्क भेजें आदि), बाध्य सेवा का उपयोग करें और यह सेवा ऑब्जेक्ट को ऑन-सर्विस कनेक्टेड विधि (जहां आप सेवा में विधियों को कॉल कर सकते हैं) में वापस कर सकते हैं। आप एक नियमित सेवा (किसी अन्य वर्ग से) के साथ बातचीत नहीं कर सकते हैं। –

1

मैं के बीच अंतर पता चला अगर यह कोड को कई गतिविधियों में मौजूद है सेवा के साथ की कोशिश दो और इसका इस्तेमाल कब करें। यदि आप सेवा के साथ बातचीत करना चाहते हैं (उदाहरण के लिए तर्क भेजें आदि), बाध्य सेवा का उपयोग करें और यह सेवा ऑब्जेक्ट को ऑन-सर्विस कनेक्टेड विधि (जहां आप सेवा में विधियों को कॉल कर सकते हैं) में वापस कर सकते हैं। आप

+0

लेकिन आप गतिविधियों और सेवाओं के बीच तर्क या अंतर प्रक्रिया संचार भेजने के लिए इंटरफेस या ब्रॉडकास्ट्रेसीवर का उपयोग कर सकते हैं, तो फिर बाध्य सेवा का उपयोग क्यों करें ?? –

11

(किसी अन्य वर्ग से) एक नियमित रूप से सेवा के साथ बातचीत नहीं कर सकते मैं इस स्पष्टीकरण चाहते:

प्रारंभ सेवाओं, एक सेवा के लिए एक गतिविधि से सरल एक तरह से बातचीत के लिए कार्यक्रम करने के लिए आसान कर रहे हैं लेकिन, वे की आवश्यकता होती है अधिक जटिल और उनके ग्राहकों के साथ विस्तारित दो-तरफा बातचीत के लिए विज्ञापन प्रोग्रामिंग।

इसके विपरीत, गतिविधियों और सेवाओं के बीच जटिल दो-तरफा इंटरैक्शन के लिए बाध्य सेवाएं बेहतर विकल्प हो सकती हैं। उदाहरण के लिए, वे दो-तरफा बातचीत का समर्थन करते हैं।

तो, जैसा कि आपने कहा था, यदि आप सेवा के साथ बाध्य सेवा का उपयोग करना चाहते हैं। प्रारंभिक सेवाओं (या मंशा सेवाओं) के साथ आप इसे कर सकते हैं, केवल इसे अधिक जटिल प्रोग्रामिंग की आवश्यकता होगी। (डगलस श्मिट द्वारा: https://www.youtube.com/watch?v=cRFw7xaZ_Mg (11'10 '')): enter image description here

अंत में, एक आखिरी कड़ी है कि मुझे भी मदद की:

यहां सार है कि मुझे समझ में (धन्यवाद डौग) की मदद की है: http://www.techotopia.com/index.php/An_Overview_of_Android_Started_and_Bound_Services

प्रारंभ सेवाओं पृष्ठभूमि में अनिश्चित काल तक चलने जब तक सेवा बंद कर दिया जाता है, या एंड्रॉयड आरयू द्वारा नष्ट हो जाता है (जैसे एक गतिविधि या यहां तक ​​कि एक प्रसारण रिसीवर के रूप में) और संभवत: अन्य एप्लिकेशन घटकों द्वारा शुरू कर रहे हैं संसाधनों को मुक्त करने के लिए नाइट सिस्टम। एक सेवा जारी रहेगी यदि आवेदन शुरू हुआ यह अब अग्रभूमि में नहीं है, और यहां तक ​​कि उस स्थिति में भी जिस घटक ने मूल रूप से सेवा शुरू की है, उसे नष्ट कर दिया गया है

बाध्य सेवा एक प्रारंभिक सेवा के समान है अपवाद है कि एक प्रारंभिक सेवा आमतौर पर परिणाम लौटाती है या इसे लॉन्च करने वाले घटक के साथ बातचीत की अनुमति नहीं देती है।दूसरी ओर, एक बाध्य सेवा, लॉन्चिंग घटक को बातचीत करने की अनुमति देती है, और सेवा से परिणाम प्राप्त करती है।

+1

एक इरादा सेवा (प्रारंभ सेवा) UI को अपडेट करने के लिए ब्रॉडकास्ट वापस भेजने जैसे परिणाम लौटा सकती है। या IntentService इंटरफ़ेस कॉलबैक पैटर्न का उपयोग करके परिणाम भी लौटा सकता है। –

+0

लेकिन आप गतिविधियों और सेवाओं के बीच तर्क या अंतर प्रक्रिया संचार भेजने के लिए इंटरफेस या ब्रॉडकास्ट्रेसीवर का उपयोग कर सकते हैं, तो फिर बाध्य सेवा का उपयोग क्यों करें ?? –

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