2010-07-01 8 views
15

के लिए यह बाध्यकारी बनाम कोई मौलिक एक android.app.Application के लिए यह बाध्यकारी बनाम एक android.app.Activity के लिए एक सेवा बंधन में अंतर है। मैं bind the service to an Application because I want to keep some global state/data in the Application instead of duplicating it in all my activities चाहता हूं।एक android.app.Activity करने के लिए एक सेवा बाइंडिंग android.app.Application

धन्यवाद।

उत्तर

12

नहीं। मौलिक अंतर नहीं है।

उस ने कहा, subclassing android.app.Aplication एक बहुत वैश्विक/राज्य डेटा स्टोर करने के लिए अच्छी जगह है। केवल एक उदाहरण है और कॉन्टेक्स्ट से प्राप्त होने वाली सभी चीज़ों तक इसकी पहुंच है।

मुझे भी यकीन है कि किसी एप्लिकेशन के लिए सेवा को बाध्य करने से कुछ अजीब जीवनकाल होंगे यदि आप सावधान नहीं हैं। मेरा मतलब यह है कि भले ही आपका ऐप दृष्टि से बाहर है और इसमें कोई गतिविधियां ज़िंदा नहीं हैं, फिर भी आपका आवेदन मौजूद हो सकता है क्योंकि आपकी सेवा अभी भी मौजूद है। आपकी सेवा अभी भी मौजूद है क्योंकि आपका आवेदन अभी भी मौजूद है। आपको ऑनस्ट्राय के अलावा किसी अन्य घटना के आधार पर सेवा को मैन्युअल रूप से बंद करना होगा।

+0

धन्यवाद। इसलिए, इस मामले में सेवा बंद करने का कोई साफ तरीका नहीं है। –

+0

मुझे पूछना होगा, यदि आप एप्लिकेशन ऑब्जेक्ट में डेटा स्टोर करने जा रहे हैं तो आप एक सेवा क्यों चाहते हैं? GetAplication() के माध्यम से आपकी सभी गतिविधियों में ऐप ऑब्जेक्ट तक पहुंच है। –

+0

सेवा सभी I/O करने जा रही है। मैं जैसे कुछ को कार्यान्वित करने की कोशिश कर रहा हूं http://stackoverflow.com/questions/3141632/android-service-interacting-with-multiple-activities शायद मैं अपनी सेवा में इस वैश्विक डेटा/राज्य को स्टोर कर सकता हूं (?) । पता नहीं है कि यह अच्छा डिजाइन या खराब डिज़ाइन है क्योंकि यह पहली बार है जब मैं कई गतिविधियों और सेवाओं के साथ काम कर रहा हूं। –

3

@ जेरे.जोन्स का उत्तर 100% सही नहीं है। आपके पास प्रति प्रक्रिया अनुप्रयोग वर्ग का एक उदाहरण है। तो यदि आप अपनी सेवा को एक अलग प्रक्रिया में चलाते हैं उदा।

<service 
     android:name=".engine.NetworkService" 
     android:exported="false" 
     android:process=":xxxService" /> 

साथ आप Appliaction, जिसका अर्थ है की दो अलग उदाहरण है यदि आप "एक राज्य पकड़" करने की जरूरत है आप अपने पार या तो प्रक्रिया नहीं यह सुनिश्चित करना चाहिए, या आप आईपीसी उपयोग करने के लिए इन sates सिंक करने के लिए है।

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

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