मेरे पास एक बाध्य सेवा है। एक गतिविधि इसे बाध्यकारी है। यह गतिविधि की onStop()
विधि पर सेवा को अनबिंड करता है।गतिविधि के रनटाइम में परिवर्तन होने पर बाध्य सेवा को नष्ट होने से कैसे रोकें (उदा: अभिविन्यास)
समस्या यह है कि यदि रनटाइम में परिवर्तन होता है (उदाहरण के लिए, अभिविन्यास परिवर्तन) गतिविधि के साथ होता है, तो गतिविधि को फिर से बनाया जाता है। इसलिए, गतिविधि से onStop()
विधि को कॉल किया जाता है, और गतिविधि उस विधि में सेवा को अनबिंड करती है, जिसके परिणामस्वरूप सेवा का विनाश होता है (और इसे पुनरारंभ करना)।
मैं गतिविधि को अदृश्य होने पर सेवा रोकते समय रनटाइम परिवर्तनों में नष्ट होने से सेवा को संरक्षित करना चाहता हूं। आप कह सकते हैं कि startService()
आज़माएं लेकिन यह गतिविधि को अदृश्य होने पर सेवा को रोकना नहीं बनाता है। अगर मैं स्टॉप सेवा गतिविधि onStop()
जोड़ता हूं, तो परिणाम bindService()
और unbindService()
जैसा ही होता है।
पोस्टडिलेइंग unbindService()
एसिटीविटी के onStop()
में इस समस्या को आंशिक रूप से हल कर सकते हैं, लेकिन देरी का समय मनमाने ढंग से होगा, और यह गतिविधि को कुछ समय के लिए जीसी प्राप्त करने से रोकता है। मुझे एक और स्पष्ट समाधान चाहिए।
मुझे android:configChanges="orientation"
जैसे समाधान नहीं चाहिए क्योंकि अन्य रनटाइम परिवर्तन भी हैं, और यह रनटाइम परिवर्तनों को संसाधित करने का एक निराश तरीका है।
संक्षेप में, मैं चाहता हूं कि सेवा एक टुकड़े की तरह कार्य करे जो setRetainInstance(true)
कहलाती है। हालांकि, टुकड़ों में bindService()
की तरह कुछ नहीं है। मुझे क्या करना चाहिए?
मैं एप्लिकेशन संदर्भ के साथ नहीं आया था। जवाब के लिए धन्यवाद। – Naetmul