2009-06-09 13 views
23

मैं एंड्रॉइड सेवाओं के साथ गड़बड़ कर रहा हूं, और मुझे पता चला है कि जब मैं किसी सेवा से जुड़ता हूं तो ServiceConnection.onServiceConnected() काफी अनुमानित रूप से कहा जाता है।ServiceConnection.onServiceDisconnected() कहां से कॉल किया जाता है?

हालांकि, मेरे onServiceDisconnected() विधि को वीएम मरने के बाद भी कभी नहीं कहा जाता है।

मैंने सेवा पर डीबग संदेश लॉग किए हैं और दिखाते हैं कि सभी धागे बंद हो गए हैं, आदि। मुझे पता है कि सेवाएं प्रक्रियाओं के रूप में लागू की जाती हैं; क्या ऐसे धागे हैं जिन्हें मैं नहीं जानता कि प्रक्रिया से बाहर निकलने से रोका जा रहा है?

उत्तर

24

यह दूरस्थ सेवा क्रैश पर होता है। इसलिए, यदि आपके क्लाइंट की तुलना में किसी भिन्न प्रक्रिया में चल रही कोई सेवा कुछ अपवाद पर विफल हो जाती है, तो आप कनेक्शन खो देते हैं और कॉलबैक प्राप्त करते हैं।

+2

क्या यह सिर्फ दुर्घटनाग्रस्त है? मैं उम्मीद करता हूं कि जब मैं 'unbindService()' कहता हूं और सेवा निकलती है क्योंकि वहां कोई और ग्राहक नहीं है। – sehugg

+3

प्रलेखन के अनुसार यह केवल 'अप्रत्याशित सेवा अनबाइंडिंग' पर होता है, इसलिए हाँ, यह केवल क्रैश पर है, और unbindService() – reflog

+2

पर नहीं, तो आप कैसे जान सकते हैं कि आप वास्तव में सेवा पर पुनर्विचार कर सकते हैं या नहीं? या बेहतर, आप कैसे पुनर्जीवित करते हैं? एक नया सेवा कनेक्शन यूइंग? – Snicolas

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