android:process=":remote"
के साथ अपने रिसीवर को परिभाषित करके आप मूल रूप से एक अलग प्रक्रिया (= वीएम) में अपना रिसीवर चलाते हैं। सामान्य उपयोग-मामलों के लिए, आपको इसे एक अलग प्रक्रिया में चलाने की आवश्यकता नहीं है, और जो कुछ भी आप करना चाहते हैं, वह शायद स्थानीय रूप से ठीक से चल सकता है (आपकी एपीके प्रक्रिया में)।
android:process=":remote"
का उपयोग करने की कमी यह है कि आपको चलाने के लिए अतिरिक्त संसाधनों की आवश्यकता है (इस मामले में एक अलग प्रक्रिया)। ऐसा करने पर, आप मूल रूप से 2 वीएम से निपट रहे हैं, और सिंगलटन जैसे कुछ पैटर्न, स्थिर फ़ील्ड अब आपके ऐप और आपकी रिमोट सेवा के बीच साझा नहीं किए जा सकते हैं।
android:process=":remote"
का उपयोग करने का लाभ यह है कि कुछ उपयोग-मामलों के लिए, एक सेवा शुरू करने के लिए आसान हो सकता है जो आपके आवेदन को बंद करने के बाद चल रहा है (या अपनी प्रक्रिया में), या यदि आप दूरस्थ ग्राहकों को चाहते हैं अपनी सेवा से बांधने में सक्षम होने के लिए। onReceive()
विधि को कॉल करने पर एक अलग प्रक्रिया में चलते समय आपका प्रसारण रिसीवर आपके अनुप्रयोगों को मुख्य थ्रेड को अवरुद्ध नहीं करेगा (हालांकि, इसे लागू करने के अन्य तरीके हैं)।
मुझे पता चला है कि अधिकांश समय, सबसे सामान्य उपयोग-मामलों के लिए, आप android:process=":remote"
का उपयोग किए बिना दूर हो सकते हैं।
किस संदर्भ में (गतिविधि, सेवा इत्यादि) रिसीवर परिभाषित किया गया है? – Pentium10
रिसीवर को मैनिफेस्ट में परिभाषित किया गया है, इसे एंड्रॉइड की अलार्ममेनगर उपयोगिता से कहा जाता है। – Jason