2010-06-18 5 views
5

एंड्रॉयड में, अगर मैं कुछ पृष्ठभूमि काम करना चाहते हैं,एंड्रॉयड - पृष्ठभूमि में चलाने के लिए - सेवा बनाम मानक जावा वर्ग

के बीच एक सेवा बनाना काम करने के लिए, और गतिविधि होने शुरू क्या अंतर है सेवा वीएस। काम करने के लिए मानक जावा क्लास बनाना, और गतिविधि को अलग-अलग थ्रेड में काम करने के लिए कक्षा का एक ऑब्जेक्ट बनाना और विधियों का आह्वान करना।

+0

यह http://stackoverflow.com/questions/2633334/application-threads-vs-service-threads –

उत्तर

5

अपने स्वयं के धागे को ओवरकिल करना, इसके लिए समाधान हैं, इसलिए आपको समेकन के कठिन भागों के बारे में चिंता करने की ज़रूरत नहीं है। AsyncTask या IntentService पर एक नज़र डालें। यदि आप किसी सेवा के लिए जाते हैं तो कृपया ध्यान रखें कि आपकी सेवा किसी भी समय मारे जा सकती है।

+0

अधिकांश मामलों में AsyncTask उन सभी कार्यों के लिए पर्याप्त है जिन्हें आप किसी अन्य थ्रेड पर चलाने के लिए चाहते हैं। – Janusz

3

अच्छा, एंड्रॉइड कार्यकर्ता धागे को आसानी से बनाने के लिए कुछ उपयोगी तरीके प्रदान करता है। Looper कक्षा परिभाषा देखें। यह आपको एक हैंडलर के माध्यम से किसी अन्य धागे में एक के बाद निष्पादित करने या विभिन्न धागे के बीच संदेशों को प्रेषित करने के लिए ईवेंट भेजने की अनुमति देता है।

एक सेवा कुछ भी फैंसी नहीं है। एक सेवा बनाना ओएस को बताने का एक तरीका है कि आपको कुछ काम करने की ज़रूरत है, भले ही आपकी गतिविधि दिखाई न दे।

2

आपके द्वारा बनाए जा रहे एप्लिकेशन के आधार पर यह एक विकल्प नहीं हो सकता है।

लगभग हर नेटवर्क एप्लिकेशन में सेवा पर कुछ कार्यक्षमता होगी ताकि उपयोगकर्ता को सक्रिय गतिविधि बदल सकें जबकि कुछ डाउनलोड किया जा रहा हो।

एक आरएसएस पाठक में, उदाहरण के लिए आप 'सभी अपडेट करें' पर क्लिक कर सकते हैं और वर्तमान डेटा कनेक्शन के आधार पर, आपकी इच्छा से थोड़ा अधिक समय लग सकता है। इसलिए यदि आप चाहते हैं कि उपयोगकर्ता होम स्क्रीन पर वापस आ सकें और फ़ाइलों को डॉउलोड किए जाने पर कुछ और कर सकें तो आपको एक सेवा का उपयोग करना होगा।

एक सेवा आपको पृष्ठभूमि पर कार्यों को चलाने की अनुमति देती है जबकि उपयोगकर्ता आपकी गतिविधि पर नहीं होता है। इसका मतलब यह नहीं है कि यह हर समय चल रहा होगा। Service lifecycle देखें।

बीटीडब्ल्यू इराद सेवा एक सेवा है।