2012-02-26 11 views
14

मेरे पास एक एंड्रॉइड ऐप है जिसमें एक गतिविधि और सेवा शामिल है। वर्तमान में वे दोनों एक ही प्रक्रिया में मौजूद हैं और एक ही ढेर का उपयोग करते हैं लेकिन मुझे सेवा के लिए प्रक्रिया/ढेर अलग करना है। अर्थात। मैं चाहता हूं कि सेवा गतिविधि से पूरी तरह से स्वतंत्र हो ताकि अगर गतिविधि दुर्घटनाग्रस्त हो जाए तो यह सेवा को प्रभावित नहीं करेगा। हालांकि, मैं उन्हें एक ही आवेदन के रूप में स्थापित करने के लिए चाहता हूं। क्या यह संभव है?एक एंड्रॉइड गतिविधि और सेवा कैसे बनाएं जो अलग प्रक्रियाओं का उपयोग करती है

उत्तर

22

निश्चित रूप से संभव है।

प्रक्रिया है जहाँ सेवा चलाने के लिए है का नाम: के शब्दों में AndroidManifest.xml

http://developer.android.com/guide/topics/manifest/service-element.html

में service के लिए process विशेषता देखें। आम तौर पर, आवेदन के लिए बनाई गई डिफ़ॉल्ट प्रक्रिया में चलाए गए एप्लिकेशन के सभी घटक। यह एप्लिकेशन पैकेज के समान नाम है। तत्व की प्रक्रिया विशेषता सभी घटकों के लिए एक अलग डिफ़ॉल्ट सेट कर सकती है। लेकिन घटक डिफ़ॉल्ट रूप से अपनी प्रक्रिया विशेषता के साथ ओवरराइड कर सकता है, जिससे आप अपने आवेदन को कई प्रक्रियाओं में फैलाने की अनुमति देते हैं।

यदि इस विशेषता को सौंपा गया नाम एक कोलन (':') से शुरू होता है, तो एप्लिकेशन के लिए निजी, एक नई प्रक्रिया बनाई जाती है, जब इसकी आवश्यकता होती है और सेवा उस प्रक्रिया में चलती है। यदि प्रक्रिया का नाम लोअरकेस चरित्र से शुरू होता है, तो सेवा उस नाम की वैश्विक प्रक्रिया में चली जाएगी, बशर्ते कि उसे ऐसा करने की अनुमति हो। यह संसाधनों के उपयोग को कम करने, प्रक्रियाओं को साझा करने के लिए विभिन्न अनुप्रयोगों में घटकों को अनुमति देता है।

+0

अच्छा। @lyricsboy लेकिन एक प्रश्न: ओपी के परिदृश्य में, जब एंड्रॉइड गतिविधि को मारता है (इसलिए ऐप), तो क्या यह उसी प्रक्रिया पर चलने वाली सेवा को भी मार देगा? –

+0

यह इस बात पर निर्भर करता है कि सेवा कैसे शुरू की जाती है (कौन सा मोड) और स्मृति से संबंधित अन्य कारक। आप यहां अधिक विशिष्टताएं पा सकते हैं: http://developer.android.com/guide/topics/fundamentals/processes-and-threads.html – lyricsboy

+0

धन्यवाद, यह – chris

5

सेवाओं के लिए आईपीसी केवल आईएमएचओ की आवश्यकता है यदि सेवा अन्य अनुप्रयोगों द्वारा खपत की जानी चाहिए।

अपनी प्रक्रिया में एक सेवा चलाने के लिए छोटे फायदे हैं जो सेवा के लिए कचरा कलेक्टर आपके आवेदन को प्रभावित नहीं करता है और सेवा के स्मृति पदचिह्न अकेले चलने पर थोड़ा छोटा होता है।

यदि अन्य अनुप्रयोगों द्वारा सेवा की खपत आपके लिए एक आवश्यकता नहीं है, तो स्थानीय सेवा पसंद करें। वैकल्पिक रूप से आप अभी भी अपनी प्रक्रिया में सेवा चला सकते हैं और अपने आवेदन के साथ विभिन्न संचार का उपयोग कर सकते हैं, उदा। एक प्रसारण रिसीवर के माध्यम से। मैंने निम्नलिखित लिंक के तहत अपने एंड्रॉइड सेवा ट्यूटोरियल में विभिन्न दृष्टिकोणों का वर्णन करने की कोशिश की: Activity and service communication

+0

(अलग प्रक्रिया में सेवा) सेवा को कॉल करने पर सेवा को रोकने के लिए सेवा को रोकने के लिए एकमात्र तरीका नहीं है ?? – EsmaeelQash

+0

हैलो वोगेला, क्या आप कृपया मुझे किसी भी scenerio समझा सकते हैं जिसमें हम "अन्य अनुप्रयोगों द्वारा सेवा की खपत" के लिए तैयार हैं, मुझे यह शब्द नहीं मिल रहा है। धन्यवाद – SRam

+0

एक अलग प्रक्रिया में एक सेवा चलाने से यह सुनिश्चित करने में मदद मिलती है कि, मुख्य ऐप की प्रक्रिया समाप्त होनी चाहिए, सेवा जारी रह सकती है। तो यह काफी उपयोगी है। – Luca

संबंधित मुद्दे