एंड्रॉइड में दो अलग-अलग प्रक्रियाओं (एक सेवा और गतिविधि) के बीच संचार via Messenger or AIDL प्रबंधित किया जा सकता है: यह पर्याप्त है कि एक गतिविधि किसी सेवा से जुड़ी हो।किसी सेवा और गतिविधि (और इसकी निष्क्रियता) के बीच आईपीसी को कैसे संभालें?
हालांकि, क्या होता है यदि इस गतिविधि में एक या अधिक उप-गतिविधि है? उस क्षण से जब मुख्य गतिविधि उप-गतिविधि शुरू करती है, तो मैं संचार को उप-गतिविधि में रीडायरेक्ट करना चाहता हूं; इसी तरह, जब उप गतिविधि नष्ट हो जाता है, मैं चाहते हैं संचार, वापस मुख्य गतिविधि पर भेज दिया जाएगा आदि ..
उदाहरण # 1:
- MyService < --- आईपीसी ---> MainActivity
- MainActivity SubActivity, तो MyService < --- आईपीसी ---> SubActivity
- SubActivity नष्ट हो जाता है, तो MyService < --- आईपीसी ---> MainActivity शुरूआत
उदाहरण # 2:
- MyService < --- आईपीसी ---> MainActivity
- MainActivity FirstSubActivity की शुरूआत है, तो MyService < --- आईपीसी ---> FirstSubActivity
- FirstSubActivity, SecondSubActivity की शुरूआत तो MyService < --- आईपीसी ---> SecondSubActivity
- SecondSubActivity नष्ट हो जाता है, तो MyService < --- आईपीसी ---> FirstSubActivity
- FirstSubActivity नष्ट हो जाता है, तो MyServi सीई < --- आईपीसी ---> मुख्य गतिविधि
इन मामलों को कैसे संभालें?
[sendBroadcast] के बारे में प्रलेखन (http://developer.android.com/reference/android/content/Context.html#sendBroadcast%28android.content.Intent%29) कहता है कि कोई भी परिणाम रिसीवर और रिसीवर से प्रचारित नहीं होता है प्रसारण को रोक नहीं सकते ._ – enzom83
यह सच है। लेकिन आपके उदाहरणों में मैंने देखा है कि आपने सेवा और गतिविधि के बीच संचार पर हाइलाइट डाले हैं। तो मैंने जो तंत्र पहले वर्णित किया है वह बस है और यदि आप सही रिसीवर और प्रसारण उद्देश्यों का उपयोग करते हैं तो आप अपनी समस्या को पूरा कर सकते हैं। (यह मेरी राय में है) –
निश्चित रूप से, मैं गतिविधि से इरादा प्राप्त करने के लिए गतिविधि में एक प्रसारण रिसीवर का उपयोग कर सकता हूं, और गतिविधि से इरादा प्राप्त करने के लिए सेवा में एक और प्रसारण रिसीवर का उपयोग कर सकता हूं। हालांकि, प्रसारण में एक संदेश भेजकर, यह संभव नहीं है कि इसे केवल एक विशिष्ट पैकेज द्वारा प्राप्त किया जाए, क्योंकि यह 4 से पहले के संस्करणों में समर्थित नहीं है: [_ वैकल्पिक रूप से, ICE_CREAM_SANDWICH से शुरू, आप सुरक्षित रूप से प्रतिबंधित भी कर सकते हैं Intent.setPackage_] के साथ एक ही एप्लिकेशन पर प्रसारित करें (http://developer.android.com/reference/android/content/BroadcastReceiver.html)। – enzom83