मेरे पास वर्तमान में एक सेवा है जो इसे शुरू करने पर ठीक चलती है लेकिन जब मैं इसे रोक सेवा सेवा विधि का उपयोग करके रोकने की कोशिश करता हूं तो इसकी ऑनस्ट्राय विधि को कॉल नहीं किया जाता है।स्टॉप सेवा बंद होने पर सेवा बंद नहीं होगी
यहाँ कोड मैं सेवा
stop_Scan_Button = (बटन) findViewById (R.id.stopScanButton) को रोकने की कोशिश करने के लिए उपयोग है,
stop_Scan_Button.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
Log.d("DEBUGSERVICE", "Stop Button pressed");
Intent service = new Intent(CiceroEngine. CICERO_SERVICE);
releaseBind();
Log.d("Stop_Scan_Button", "Service: " + service.toString());
stopService(service);
Log.d("Stop_Scan_Button", "Service should stop! ");
}
});
क्या मैं सोच रहा हूं कि जब स्टॉप सेवा का उपयोग किया जाता है तो यह सेवा की ऑनस्ट्राय विधि को कॉल करता है? जब मैं अपना स्टॉप स्कैन बटन दबाता हूं तो onDestroy()
मेरी सेवा में विधि नहीं कहा जाता है।
क्या कोई और चीज है जो मुझे याद आ रही है कि मुझे सेवा को रोकने के लिए रखा जाना चाहिए?
संपादित करें: onServiceConnected()
जोड़ने के लिए कहा जाता है जब onServiceDisconnected()
के बजाय stopService चलाया जाता है, यह क्यों हो रहा है?
संपादित करें: को जोड़ने के लिए और अधिक जानकारी
बाइंडिंग का संबंध रहा onCreate में bindService() विधि कहते हैं और मैं तो releaseBind() विधि सेवा निकल की है।
public void releaseBind(){
unbindService(this);
}
तो मुझे लगता है कि unbinding मेरी समस्या नहीं है:
यहाँ कि विधि के लिए कोड है?
मैं अपने मूल प्रश्न संपादित किया है मेरी बंधन के बारे में जानकारी शामिल करने के लिए, मैं इसे बाध्यकारी और फिर unbinding –
Ummm, कि कोड पूरी तरह से में गड़बड़ और है की क्या ज़रूरत है लगभग निश्चित रूप से आपकी समस्या में योगदान। 'bindService()' और 'unbindService()' अतुल्यकालिक हैं और आप जिस तरीके से उपयोग कर रहे हैं, उसमें असफल होने की गारंटी दी जाती है। दुर्भाग्य से, मुझे नहीं पता कि आप यहां क्या करने की कोशिश कर रहे हैं, इसलिए मेरे पास आपको सलाह देने का कोई अच्छा तरीका नहीं है। – CommonsWare
यह सिर्फ दो बटन यूआई है, एक सेवा शुरू करने के लिए और इसे रोकने के लिए एक। मैंने अपनी रिलीज से बाहर बयान लिया है बाइंड() विधि केवल unBindService (यह) छोड़कर; यह सेवा को अपंजीकृत करने के लिए प्रतीत होता है जब मैं दूसरी बार उस पर क्लिक करता हूं तो मुझे "सेवा पंजीकृत नहीं है" त्रुटि मिलती है। हालांकि, स्टॉप सेवा अभी भी मेरी सेवा में ऑनस्ट्रोय() विधि को कॉल करने के लिए प्रतीत नहीं होती है, पृष्ठभूमि सेवाएं अभी भी –