कहा जाता है मेरे पास गतिविधि और सेवा है। जब गतिविधि शुरू होती है, तो यह सेवा startService()
पर कॉल करती है ताकि इस सेवा के साथ संवाद करने के लिए गतिविधि को नष्ट कर दिया गया हो और bindService()
भी सेवा प्रदान की जा सके।एंड्रॉइड सेवा: ऑनबिंड (इरादा) और ऑनबिंड (इरादा) को केवल एक बार
bindService()
सत्य लौटाता है, mService.onBind()
कहा जाता है, और ServiceConnection.onServiceConnected()
भी कहा जाता है। सभी काम
जब मैं बैक कुंजी दबाकर अपनी गतिविधि को नष्ट करता हूं, तो यह unbindService()
पर कॉल करता है, और मेरे mService.onUnbind()
को कॉल किया जाता है। bindService()
रिटर्न सच (मैं इस onUnbind()
में false
लौट आते हैं।)
तब मैं इस गतिविधि फिर से शुरू, और फिर mService.onBind()
नहीं कहा जाता है! लेकिन ServiceConnection.onServiceConnected()
भी कहा जाता है, और सभी फिर से काम करता है।
ऐसा लगता है कि डाल्विक याद करते हैं कि मेरा onBind()
पिछली बार लौटा, और बस onBind()
पर कॉल नहीं करता है। जब मैं अपनी गतिविधि को फिर से नष्ट कर देता हूं, onUnbind()
भी नहीं कहा जाता है।
मैं इस गतिविधि को किसी भी समय अपनी गतिविधि में बाध्य और अनइंड कर सकता हूं, लेकिन इन विधियों को अब तक नहीं कहा जाएगा जब तक कि मैं बिना किसी बाध्यता और stopService()
पर कॉल करके सेवा को नष्ट कर देता हूं।
दस्तावेज़ों में मुझे इस व्यवहार का कोई स्पष्टीकरण नहीं मिल रहा है। इसके विपरीत, this figure दिखाता है कि onBind()
और onUnbind()
हर बार क्लाइंट को बाध्य और अनइंड सेवा कहा जाना चाहिए। यह आंकड़ा this Dev Guide के नीचे पाया जा सकता है।
ओह धन्यवाद। दुर्भाग्य से, मुझे यह याद आया। हालांकि, मुझे पता चला कि मैं 'ऑनबिंड()' में सत्य वापस कर सकता हूं, और उसके बाद 'ऑन रिबिंड()' और 'ऑनबिंड()' को अगले क्लाइंट के लिए बुलाया जाएगा। –
प्रलेखन वास्तव में भ्रामक है। यह कहता है कि 'ऑनबिंड()' पर कोई और कॉल नहीं किया जाता है, लेकिन यह केवल कई ग्राहकों के मामले पर लागू होता है। डॉक्स यह भी कहता है कि "यदि आपकी सेवा शुरू हो गई है और बाध्यकारी स्वीकार करती है, तो जब सिस्टम आपके ऑनबिंड() विधि को कॉल करता है, तो आप वैकल्पिक रूप से सत्य लौट सकते हैं यदि आप अगली बार जब ग्राहक क्लाइंट से जुड़ता है तो उसे रिबंड() पर कॉल प्राप्त करना है सेवा (** ऑनबिंड() ** पर कॉल प्राप्त करने के बजाय) "। केवल 'ऑनबिंड() 'पर कोई कॉल नहीं है। फिर भी एक और मामला जब दस्तावेज गलत है। – Malcolm
@ मैल्कम में बंपिंग के लिए खेद है ... मेरे पास बाध्यकारी और अनबाइंडिंग सामान के बारे में एक प्रश्न है।अगर मैं उस सेवा के अंदर सर्वरस्केट थ्रेड डालता हूं, और गतिविधि-ए में मैं बाध्यकारी और बाध्यकारी के साथ ऑनस्टार्ट() और ऑनस्टॉप() डालता हूं। अगर मैं दूसरी गतिविधि में जाता हूं और इसे फिर से बाध्य करता हूं तो क्या इसे फिर से बनाया जाएगा? या थ्रेड अभी भी आखिरी रहेंगे? – gumuruh