2012-02-05 14 views
5

मुझे यह जानने की ज़रूरत है कि जब मैं एक स्वतंत्र धागे का उपयोग करके कुछ ऑपरेशन कर सकता हूं, तो मुझे सेवा की आवश्यकता क्यों है। वह क्या है, एक सेवा कर सकती है लेकिन एक थ्रेड नहीं कर सकता है? मैं कई पदों के माध्यम से गया लेकिन मुझे एक संतोषजनक उत्तर नहीं मिला।एंड्रॉइड में सेवा और थ्रेड के बीच अंतर?

उत्तर

11

सेवा का मुख्य लाभ एक संदर्भ वस्तु तक पहुंच है जिसमें एक स्वतंत्र जीवन चक्र है। यह कई गतिविधियों द्वारा आम कोड का पुन: उपयोग करने की अनुमति देता है और, सार्वजनिक या उजागर सेवाओं के मामले में, कई अनुप्रयोग।

एक धागा अन्य काम को अवरुद्ध किए बिना काम करने के लिए एक तंत्र है।

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

+0

ठीक है .. अगर मैं एक कार्यकर्ता धागे में संदर्भ पास करता हूं तो क्या यह उद्देश्य पूरा करेगा? – SAMD

+0

आपने मामले या उद्देश्य को समझाया नहीं है, इसलिए मेरे लिए आपको यह कहना मुश्किल है। –

+0

असल में मैं कुछ असाधारण मामले की तलाश में हूं जहां एक सेवा का उपयोग करने की आवश्यकता है। मुझे इस सवाल से पूछा गया था और जवाब नहीं दे सका, इसलिए मैं स्टैक ओवरफ़्लो का उपयोग करके सहायता लेने की कोशिश कर रहा हूं। – SAMD

3

Difference between Service and Threaads

कृपया इस लिंक पर जाएं, मैं आप इस लिंक में जवाब मिल जाएगा उम्मीद है।

संक्षेप में, सेवा और थ्रेड के बीच मुख्य अंतर यह है कि, सेवा मुख्य (UI) थ्रेड और थ्रेड रनों को अपने स्वयं के धागे पर चलाती है। यदि हम लंबे कार्यों के लिए सेवा का उपयोग कर रहे हैं, तो यह ब्लॉक मुख्य यूआई थ्रेड का कारण बन सकता है।

कृपया अधिक जानकारी के लिए दिए गए लिंक पर जाएं।

29

सेवा: एंड्रॉइड का एक घटक है जो पृष्ठभूमि में लंबे समय तक चलने वाला ऑपरेशन करता है, ज्यादातर यूआई होने के साथ।

थ्रेड: एक ओएस स्तर सुविधा है जो आपको पृष्ठभूमि में कुछ ऑपरेशन करने की अनुमति देती है।

हालांकि अवधारणात्मक रूप से दोनों समान दिखते हैं, कुछ महत्वपूर्ण भिन्नताएं हैं।

1. सेवा - यदि यह कम मेमोरी परिदृश्य के कारण एंड्रॉइड द्वारा मध्य में अपनी नौकरी करने के दौरान नष्ट हो जाती है। फिर एंड्रॉइड यह सुनिश्चित करेगा कि यह आपकी सेवा को पुनरारंभ करेगा, अगर आपने START_StICKY या START_REDELIVER_INTENT ऑनस्टार्ट कमांड() से वापस कर दिया है।

2. थ्रेड - यदि यह कम स्मृति के कारण मध्य में एंड्रॉइड द्वारा नष्ट हो जाता है, तो एंड्रॉइड फिर से इसे पुनरारंभ करने की गारंटी नहीं देगा। इसका मतलब है कि उपयोगकर्ता ने अपना आधा काम खो दिया।

3.Service - एंड्रॉयड का एक घटक है, तो यह प्राथमिकता के स्तर जबकि कम मेमोरी के कारण एक आवेदन को नष्ट करने पर विचार किया जाना है।

4. थ्रेड - एंड्रॉइड का एक घटक नहीं है, इसलिए कम स्मृति के कारण एप्लिकेशन को मारने के दौरान एंड्रॉइड थ्रेड प्राथमिकता को ध्यान में नहीं रखेगा।

मैं इस तीसरे बिंदु को समझाने की कोशिश करूंगा।

बताएं, आपको अपनी गतिविधि से इंटरनेट से कनेक्ट करने की आवश्यकता है। आप गतिविधि में थ्रेड बनाकर या सेवा (थ्रेड के साथ) या सीधे उपयोग करके ऐसा कर सकते हैं। दूसरे परिदृश्य पर विचार करें जहां आप थ्रेड में इंटरनेट से कनेक्ट कर रहे हैं।फिर

i। क्या होगा यदि उपयोगकर्ता गतिविधि बंद कर देता है, जबकि पृष्ठभूमि में थ्रेड चल रहा है। क्या वह धागा वापस जमीन पर चल रहा है? जवाब यह है कि आप वास्तव में भविष्यवाणी नहीं कर सकते हैं।

ii। मान लीजिए कि उपरोक्त परिदृश्य के लिए निरंतरता में, गतिविधि को मारने के बाद भी आपका धागा अपना इच्छित ऑपरेशन जारी रखता है। फिर आपके फोन में कम स्मृति स्थिति उत्पन्न होती है। फिर यह एप्लिकेशन मारने वाला पहला अतिसंवेदनशील ऐप होगा क्योंकि इस एप्लिकेशन के लिए कोई प्राथमिकता नहीं है।

तो नीचे पंक्ति है: यदि आप कुछ भारी पृष्ठभूमि कार्यक्षमता करना चाहते हैं तो थ्रेड के साथ सेवा हमेशा बेहतर होती है। यदि आपको लगता है कि जब तक आपकी गतिविधि जिंदा है तब तक पृष्ठभूमि कार्यक्षमता जीवित रहती है, फिर थ्रेड या एसिंक कार्य के साथ गतिविधि के साथ गतिविधि के लिए जाएं।

उम्मीद है कि यह मदद करता है।

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