2011-03-13 7 views
15

मैं अंग्रेजी में अच्छा नहीं हूँ, लेकिन मैं अच्छा तरीका में मेरी समस्या समझाने की कोशिश करेंगे।
एंड्रॉयड, अनबाइंड सेवाओं और onServiceDisconnected समस्या

तो, समस्या है:
1) मैं एक स्थानीय सेवा
2) मैं इसे शुरू करने और फिर इसे करने के लिए बाध्य है। 3) समस्या प्रकट होता है जब मैं के बारे में है कि सेवा बंद करने के लिए कर रहा हूँ। वर्ग ServiceConnection की मेरी कार्यान्वयन कभी नहीं कहा जाता है से onServiceDisconnected विधि। अगर मैं (सेटिंग्स से) मैन्युअल रूप से इसे बंद करें, या unbindService, या stopService करके या unbindService के संयोजन और stopService द्वारा - अभी भी onServiceDisconnected के नाम से जाना नहीं है। मैं क्या गलत कर रहा हूँ? (दुर्घटनाग्रस्त हो गया/मारे गए)

protected ServiceConnection mServerConn = new ServiceConnection() { 
    @Override 
    public void onServiceConnected(ComponentName name, IBinder binder) { 
     Log.d(LOG_TAG, "onServiceConnected"); 
    } 

    @Override 
    public void onServiceDisconnected(ComponentName name) { 
     Log.d(LOG_TAG, "onServiceDisconnected"); 
    } 
} 

public void start() { 
    // mContext is defined upper in code, I think it is not necessary to explain what is it 
    mContext.bindService(i, mServerConn, Context.BIND_AUTO_CREATE); 
    mContext.startService(i); 
} 

public void stop() { 
    mContext.stopService(new Intent(mContext, ServiceRemote.class)); 
    mContext.unbindService(mServerConn); 
} 

मैं Android 2.2

उत्तर

23

onServiceDisconnected की एमुलेटर के तहत इस कोड का परीक्षण कर रहा हूँ केवल चरम स्थितियों में कहा जाता है:

शॉर्ट कोड के नीचे है।

जो स्थानीय सेवा के लिए होने की संभावना नहीं है क्योंकि आपके सभी एप्लिकेशन घटक सामान्य रूप से एक ही प्रक्रिया में चलते हैं ... जिसका अर्थ है कि जब तक आप सेवा को अनइंड या नष्ट नहीं करते हैं, तो यह जुड़े रहना चाहिए, या घटक के साथ मरना चाहिए यह।

+1

ठीक है, धन्यवाद। मैंने नहीं सोचा था कि यह एक बग या smth है। इसलिए मैंने सुई डेटा (कोड) को ServiceDisconnected() से रोकने के लिए कॉपी किया()। अब काम करता है जैसा मैं चाहता था। – UAS

+0

यह सही है। लेकिन unbindService (कनेक्शन) को कॉल करने के बाद, मैं myservice (सेवा) कक्षा में मौजूद सार्वजनिक विधि को कॉल करने में सक्षम हूं। तो, unbindservice() विधि सही के साथ कोई मतलब नहीं है ??? लेकिन सेवा Destroy() पर कॉल करके नष्ट हो गया है। – yokks

1

मैं bindService में Context.BIND_AUTO_CREATE इस्तेमाल किया। मेरे लिए यह सही काम करने के बाद मैंने एक ही मुद्दा लाया है।

bindService(new Intent(this,XMPPService.class),mConnection, Context.BIND_AUTO_CREATE); 
संबंधित मुद्दे