अद्यतन: ऐसा लगता है कि एंड्रॉइड दस्तावेज़ में अब एक स्पष्टीकरण शामिल है, http://developer.android.com/reference/android/app/Service.html#WhatIsAService देखें।
मूल जवाब:
एंड्रॉयड में, एक Service
किसी भी समवर्ती निष्पादन ("पृष्ठभूमि में रन") प्रदान नहीं करता है। यह वास्तव में एक साधारण जावा ऑब्जेक्ट का अधिक है जो new
के माध्यम से आपके एप्लिकेशन की बजाय एंड्रॉइड सिस्टम के माध्यम से केवल तत्काल (और प्रबंधित) है।
इसलिए सेवा की सबसे महत्वपूर्ण संपत्ति वर्कलोड को परिभाषित करने के बारे में नहीं है; यह सरल धागे के साथ हासिल किया जा सकता है।
सेवा ऑब्जेक्ट विशेष बनाता है कि यह एंड्रॉइड सिस्टम के साथ एक सेवा सेवा के रूप में पंजीकृत है। यह प्रणाली को पता है कि यह ऑब्जेक्ट कुछ प्रकार की सेवा प्रदान करता है और जितना संभव हो सके ज़िंदा रखा जा सकता है, या जब तक इसे रोका नहीं जाता है। सामान्य अनुप्रयोग धागे के पास एंड्रॉइड सिस्टम के लिए यह विशेष अर्थ नहीं है और सिस्टम के विवेकाधिकार पर अधिक उदारता से समाप्त कर दिया जाएगा।
तो, अगर आपको कुछ पृष्ठभूमि गतिविधियों की आवश्यकता होती है, तो केवल आपके आवेदन/Activity
सक्रिय होने पर, एक धागा आपको जो चाहिए वह कर सकता है।
आप एक घटक है कि
सक्रिय रहता है की जरूरत है
भी साफ़ कर दिया नहीं होगा जब, कुछ समय के बाद, एंड्रॉयड सिस्टम स्मृति से अपने Activities
को दूर करने का फैसला करता है, तो आप सेवा, या यहां तक कि एक "अग्रभूमि सेवा" के लिए जाना चाहिए , जिसे सिस्टम द्वारा और भी महत्वपूर्ण माना जाता है और संसाधनों को पुनः प्राप्त करने के लिए भी कम होने की संभावना कम है।
बेशक
, अगर वांछित, एक Service
वस्तु भी एक या अधिक Thread
उदाहरण हैं जिनमें तो जब तक Service
वस्तु ही रह सकता है को रोकने के लिए बनाया जा सकता है।
संपादित करें:
ओह, प्लस: एक सेवा है, निश्चित रूप से, अगर आप अन्य अनुप्रयोगों के लिए कुछ सेवा (ओं), उपलब्ध कराना चाहते हैं रास्ते जाने के लिए जो कर सकते हैं एक सेवा करने के लिए "बाँध" केवल ।
का उपयोग करके समाप्त हुआ 'एक सेवा अलग थ्रेड पर नहीं चलती है, इसलिए यह यूआई को अवरुद्ध कर देगा,' हम्म? सेवा में यूआई नहीं है। यह कौन सा ब्लॉक करने जा रहा है? –
मुझे लगता है कि, आप कहने का मतलब था कि गतिविधि से सेवा कॉल कॉल की अवधि के लिए गतिविधि के यूआई को अवरुद्ध कर देगा। हो सकता है कि आपको इसे स्पष्ट करना चाहिए। –
[एंड्रॉइड सर्विसेज] (http://developer.android.com/reference/android/app/Service.html) ओएस के यूआई थ्रेड को अवरुद्ध नहीं करेगा - "इसका मतलब है कि, यदि आपकी सेवा कोई भी करने जा रही है सीपीयू गहन (जैसे एमपी 3 प्लेबैक) या अवरुद्ध (जैसे नेटवर्किंग) संचालन, इसे अपने स्वयं के धागे को उस काम को करने के लिए तैयार करना चाहिए। " –