क्या आप कृपया मुझे समझने में मदद कर सकते हैं कि IntentService
और Service
के बीच क्या अंतर है?एक इंटेंट सेवा और सेवा के बीच क्या अंतर है?
उत्तर
संक्षेप में, डेवलपर पृष्ठभूमि कार्यों को स्थापित करने के लिए एक व्यापक कार्यान्वयन है, जबकि एक इंटेंट सेवा पृष्ठभूमि की थ्रेड सृजन और सफाई की देखभाल करते हुए "आग और भूलने" संचालन के लिए उपयोगी है।
डॉक्स से:
सेवा एक सेवा या तो एक आवेदन के जबकि उपयोगकर्ता के साथ बातचीत नहीं एक लंबे समय तक चलने वाली कार्रवाई करने के लिए या अन्य अनुप्रयोगों का उपयोग करने के लिए कार्यक्षमता की आपूर्ति करने की इच्छा का प्रतिनिधित्व करने के लिए एक आवेदन घटक है।
IntentService सेवा IntentService वे सेवाएं जिन (उद्देश्य के रूप में व्यक्त) मांग पर अतुल्यकालिक अनुरोध को संभाल के लिए एक आधार वर्ग है। ग्राहक startService(Intent)
कॉल के माध्यम से अनुरोध भेजते हैं; सेवा आवश्यकतानुसार शुरू की जाती है, कार्यकर्ता धागे का उपयोग करके प्रत्येक इरादे को बदले में रखती है, और जब यह काम से बाहर हो जाती है तो खुद को रोक देती है।
इस दस्तावेज़ के संदर्भ लें - http://developer.android.com/reference/android/app/IntentService.html
IntentService सेवाओं का आधार वर्ग नहीं है। इसके विपरीत यह सच है। जांचें - http://developer.android.com/reference/android/app/IntentService.html – Darpan
@ डारपैन यह "सेवाओं" के लिए नहीं, "सेवाओं को अतुल्यकालिक अनुरोधों को संभालती है" के लिए आधार श्रेणी है। यही कारण है कि उपरोक्त वाक्य सही है। – nucleo
हाय सब, क्या मैं एक सेवा के भीतर एक इरादा सेवा लिख सकता हूं? यदि हां, तो कृपया कोई उदाहरण/कोड स्निपेट प्रदान कर सकता है। धन्यवाद –
सेवा: यह आपके सिस्टम पर पृष्ठभूमि में चलता है। उदाहरण के लिए,
- यदि आप एक होटल के पास गया और यदि आप किसी सर्वर
- सर्वर अपने आदेश हो जाता है और शेफ के लिए भेजता है
- आप कैसे सूप है पता नहीं है के लिए एक सूप के लिए अपने आदेश देना रसोई में बने और सूप बनाने के लिए कौन सी प्रक्रियाओं की आवश्यकता होती है
- एक बार आपका ऑर्डर तैयार हो जाने पर, सर्वर आपको सूप लाता है।
पृष्ठभूमि प्रक्रिया: महाराज बनाने सूप
IntentService: - यह लगातार सेवा .. (यानी) सर्वर से एक समय में कई खाद्य पदार्थों के आदेश लेकिन सर्वर ने एक-एक करके उन वस्तुओं एक बचाता है और उन्हें एक ही समय में वितरित न करें।
मुझे आपकी व्याख्या की शैली पसंद है। –
क्षमा करें, लेकिन यह दोनों के बीच महत्वपूर्ण अंतर गुम है .. – eRaisedToX
"लगातार सेवा" से आपका क्या मतलब है? –
Service
वास्तव में आपके ऐप के उसी थ्रेड में चलता है; जब आप सेवा बढ़ाते हैं, तो आपको CPU अवरोधन संचालन चलाने के लिए मैन्युअल रूप से नए धागे को स्पॉन करना होगा।
बनाम
IntentService
Service
का एक उपवर्ग जो वहाँ से पृष्ठभूमि काम करने के लिए एक धागा (सीपीयू अवरुद्ध संचालन करने के लिए एक नया धागा बनाने के लिए कोई ज़रूरत नहीं) spawns है।
सीपीयू अवरुद्ध संचालन को रोकने के लिए नहीं है, उन्हें चलाने के लिए नहीं? मुझे यकीन नहीं है कि – committedandroider
यह सच है, सीपीयू अवरोधन संचालन चलाने के लिए सेवा को एक नया धागा नया बनाना –
Service
सेवा कार्यान्वयन का एक आधार वर्ग है। Service
एप्लिकेशन के मुख्य थ्रेड में चलाया गया है जो एप्लिकेशन प्रदर्शन को कम कर सकता है। इस प्रकार, IntentService
, जो सेवा का प्रत्यक्ष उप-वर्ग है, चीजों को आसान बनाने के लिए उपलब्ध है।
IntentService
पृष्ठभूमि में एक निश्चित कार्य करने के लिए उपयोग किया जाता है। एक बार हो जाने पर, IntentService
का उदाहरण स्वचालित रूप से समाप्त हो जाता है।इसके उपयोग के लिए उदाहरण इंटरनेट से एक निश्चित संसाधन डाउनलोड करना होगा। जबकि IntentService
एक कार्यकर्ता धागा बनाता है और सेवा को चलाने के लिए कि धागा का उपयोग करता
मतभेद
Service
वर्ग, आवेदन के मुख्य थ्रेड उपयोग करता है।IntentService
एक कतार बनाता है जो एक समय मेंonHandleIntent()
पर एक इरादा पास करता है। इस प्रकार, एक बहु-थ्रेड को लागू करनाService
कक्षा को सीधे बढ़ाकर किया जाना चाहिए।Service
कक्षा कोstopSelf()
का उपयोग कर मैन्युअल स्टॉप की आवश्यकता है। इस बीच,IntentService
निष्पादन समाप्त होने पर स्वचालित रूप से बंद हो जाता है।IntentService
onBind()
लागू करता है जोnull
देता है। इसका मतलब है किIntentService
डिफ़ॉल्ट रूप से बाध्य नहीं किया जा सकता है।IntentService
onStartCommand()
लागू करता है जो कतार औरonHandleIntent()
पर इरादा भेजता है।
संक्षेप में, IntentService
का उपयोग करने के लिए केवल दो चीजें हैं। सबसे पहले, कन्स्ट्रक्टर को लागू करने के लिए। और दूसरी बात, onHandleIntent()
को लागू करने के लिए। अन्य कॉलबैक विधियों के लिए, सुपर को कॉल करने की आवश्यकता होती है ताकि इसे ठीक से ट्रैक किया जा सके। जबकि IntentService एक कार्यकर्ता धागा बनाता है और सेवा को चलाने के लिए कि धागा का उपयोग करता
अच्छी व्याख्या। मैं संगीत ऐप बना रहा हूं। तो, इसके लिए कौन सा अच्छा होगा? सेवा या मंशा सेवा? –
संगीत ऐप के लिए मुझे लगता है कि आपको सेवा का उपयोग करना है क्योंकि डिफ़ॉल्ट रूप से, IntentService अविश्वसनीय है और, मुझे लगता है कि आपको संगीत संगीत के साथ शुरू करने के लिए अपने संगीत ऐप को बाध्य करना होगा। जैसा कि पहले से ही कहा गया है, "प्रारंभ और भूलना" के लिए इरादा सेवा बेहतर है – Premier
@ प्रीमियर इरादा सेवा सेवा के समान नहीं होगी। START_NOT_STICKY? जैसा कि आपके उदाहरण के अनुसार "प्रारंभ और भूलना" भी है। –
मतभेद
- सेवा वर्ग, आवेदन के मुख्य थ्रेड उपयोग करता है।
- IntentService एक कतार बनाता है जो एक समय में एक उद्देश्य को HandleIntent() पर पास करता है। इस प्रकार, एक बहु-थ्रेड को लागू करना सीधे सेवा वर्ग को विस्तारित करके किया जाना चाहिए।
- सर्विस क्लास को StopSelf() का उपयोग करके मैन्युअल स्टॉप की आवश्यकता होती है। इस बीच, कतार में कोई इरादा नहीं होने पर IntentService स्वचालित रूप से स्वयं को रोक देता है।
- IntentService लागू करता है() जो शून्य देता है। इसका मतलब है कि IntentService डिफ़ॉल्ट रूप से बाध्य नहीं किया जा सकता है।
- इंटेंट सेवा सेवा स्टार्ट कमांड() पर लागू होती है जो कतार और आंडलइन्टेंट() पर इरादा भेजती है।
सेवा स्टार्ट कमांड पर भी लागू नहीं होती है? –
Service
: मुख्य थ्रेड में काम करता है तो यह कुछ सेकंड के बाद एक ANR (एंड्रॉयड प्रतिसाद नहीं) का कारण होगा।
IntentService
: Service
एक अन्य पृष्ठभूमि थ्रेड के साथ मुख्य धागे के साथ बातचीत किए बिना कुछ करने के लिए अलग से काम कर रहा है।
* सेवा: मुख्य धागे में काम करता है, इसलिए यह कुछ सेकंड के बाद एएनआर (एंड्रॉइड नॉट प्रतिसाद) का कारण बनता है। * - मेरे पास घंटों और घंटों तक चलने वाली सेवा हो सकती है और मैंने कभी एएनआर नहीं देखा है, इसलिए मुझे संदेह है कि सच हैं। –
आशय सेवा सेवा
कीIntentService बच्चा है: आप आपका ऐप्लिकेशन खोलने के शुरू में छवियों का एक गुच्छा डाउनलोड करना चाहते हैं। यह एक बार की प्रक्रिया है और सबकुछ डाउनलोड होने के बाद खुद को साफ कर सकता है।
सेवा: एक सेवा जिसका उपयोग लगातार आपके ऐप और वेब एपीआई कॉल के साथ बैक-एंड के बीच संवाद करने के लिए किया जाएगा।यहां तक कि अगर यह अपने वर्तमान कार्य के साथ समाप्त हो गया है, आप अभी भी इसे और अधिक संचार
सेवा
- कोई यूआई के साथ कार्य करने के लिए कुछ ही मिनट बाद आसपास होने के लिए, चाहते हैं, लेकिन लंबे समय तक कार्य के लिए उपयोग नहीं करना चाहिए । द्वारा
onStartService()
- किसी भी थ्रेड से उत्प्रेरित लंबे टास्क
- आह्वान के लिए सेवा के भीतर थ्रेड का उपयोग करें
- चलाता मुख्य थ्रेड पर
- ब्लॉक मई
main(UI
) धागा
IntentService
- लंबे काम आमतौर पर मुख्य वें के साथ कोई संचार नहीं है पढ़ संचार तो यह हैंडलर के द्वारा किया या आशय
- मुख्य थ्रेड से शुरू हो रहा के माध्यम से प्रसारित
- आह्वान किया जाता है की जरूरत है, तो अलग थ्रेड पर ( आशय मुख्य थ्रेड और कार्यकर्ता धागे पर प्राप्त होता है spawed है)
- रन
- हम समानांतर में कार्य नहीं चला सकते हैं और एक ही कार्यकर्ता धागे पर कई इरादों को कतारबद्ध किया जाता है।
सेवा
यह सभी सेवाओं के लिए आधार वर्ग है। जब आप इस वर्ग का विस्तार करते हैं, तो यह महत्वपूर्ण है कि आप एक नया थ्रेड बनाएं जिसमें सभी सेवा के काम करने के लिए, क्योंकि सेवा डिफ़ॉल्ट रूप से आपके एप्लिकेशन के मुख्य थ्रेड का उपयोग करती है, जो आपके एप्लिकेशन के चल रहे किसी भी गतिविधि के प्रदर्शन को धीमा कर सकती है।
IntentService
यह है कि सभी अनुरोधों, एक समय में एक शुरू संभालने के लिए एक कार्यकर्ता धागा का उपयोग करता है सेवा के एक उपवर्ग है। यदि आपको आवश्यकता नहीं है कि आपकी सेवा एक साथ कई अनुरोधों को संभालती है तो यह सबसे अच्छा विकल्प है। आपको केवल इतना करना है कि हैंडलइन्टेंट() पर लागू किया गया है, जो प्रत्येक प्रारंभ अनुरोध के लिए मंशा प्राप्त करता है ताकि आप पृष्ठभूमि कार्य कर सकें। जबकि IntentService एक कार्यकर्ता धागा बनाता है और सेवा को चलाने के लिए कि धागा का उपयोग करता
मतभेद
सेवा वर्ग, आवेदन के मुख्य थ्रेड उपयोग करता है। IntentService एक कतार बनाता है जो एक समय में एक उद्देश्य को HandleIntent() पर पास करता है। इस प्रकार, एक बहु-थ्रेड को लागू करना सीधे सेवा वर्ग को विस्तारित करके किया जाना चाहिए। सर्विस क्लास को StopSelf() का उपयोग करके मैन्युअल स्टॉप की आवश्यकता होती है। इस बीच, कतार में कोई इरादा नहीं होने पर IntentService स्वचालित रूप से स्वयं को रोक देता है। IntentService लागू करता है बाइंड() जो शून्य देता है। इसका मतलब है कि IntentService डिफ़ॉल्ट रूप से बाध्य नहीं किया जा सकता है। IntentServiceStartCommand() पर लागू होता है जो कतार में और HandleIntent() पर इरादा भेजता है।
इस विषय के बारे में तेजस लागवंकर के post देखें। नीचे सेवा और मंशा सेवा और अन्य घटकों के बीच कुछ महत्वपूर्ण अंतर हैं।
अच्छी टैब्यूलर जानकारी –
- 1. वेब सेवा और विंडोज सेवा के बीच अंतर क्या हैं?
- 2. किसी इंटेंट सेवा
- 3. डब्ल्यूसीएफ सेवा पुस्तकालय और डब्ल्यूसीएफ सेवा आवेदन के बीच अंतर
- 4. भंडार और सेवा के बीच अंतर?
- 5. विंडोज सेवा और नियमित एप्लिकेशन के बीच क्या अंतर है?
- 6. वेब सेवा और रिमोटिंग के बीच क्या अंतर है?
- 7. पृष्ठभूमि और अग्रभूमि सेवा के बीच क्या अंतर है?
- 8. नियंत्रक और सेवा के बीच क्या अंतर है?
- 9. गेटवे और सेवा सक्रियकर्ता के बीच क्या अंतर है?
- 10. एक कारखाने, प्रदाता और एक सेवा के बीच अंतर?
- 11. साधारण वेब-सेवा और साबुन-आधारित वेब सेवा के बीच क्या अंतर है?
- 12. शीर्ष-डाउन वेब सेवा और नीचे-अप वेब सेवा के बीच क्या अंतर है?
- 13. डब्ल्यूसीएफ सेवा आवेदन और डब्ल्यूसीएफ सेवा पुस्तकालय के बीच क्या अंतर है?
- 14. सेवा रीलोड और सेवा पुनरारंभ करने के बीच क्या अंतर है?
- 15. डब्ल्यूसीएफ और आरआईए सेवा डोमेन सेवा कक्षा के बीच क्या अंतर है?
- 16. विंडो सेवा, डब्ल्यूसीएफ सेवा आवेदन और एएसपी.नेट वेब सेवा आवेदन के बीच अंतर?
- 17. वेबसाइसेस के साथ काम करते समय एंडपॉइंट, एक सेवा और पोर्ट के बीच क्या अंतर है?
- 18. एक .svc फ़ाइल का उपयोग करने और 'डब्ल्यूसीएफ सेवा होस्ट' में डब्ल्यूसीएफ सेवा की मेजबानी के बीच क्या अंतर है?
- 19. एंड्रॉइड में सेवा और थ्रेड के बीच अंतर?
- 20. वेबलॉगिक एकीकरण और ओरेकल सेवा बस के बीच अंतर?
- 21. वेब संदर्भ और सेवा संदर्भ के बीच अंतर?
- 22. एएसपीनेट वेब विधि और एक डब्ल्यूसीएफ सेवा के बीच क्या अंतर है?
- 23. वसंत autodetection के लिए, घटक और सेवा के बीच क्या अंतर है?
- 24. क्या एक डब्ल्यूसीएफ सेवा एक वेब सेवा है?
- 25. डेटाबेस और वेब सेवा कॉल के बीच स्पीड अंतर क्या है?
- 26. @ कॉम्पोनेंट और @ रिपोजिटरी/@ सेवा एनोटेशन को संसाधित करने के बीच क्या अंतर है?
- 27. किसी एप्लिकेशन सर्वर में कोड की वेब सेवा और एप्लिकेशन परत के बीच क्या अंतर है
- 28. "डेटा सेवा परत" और "डेटा एक्सेस लेयर" के बीच क्या अंतर है?
- 29. सेवा लोकेटर और फैक्टरी डिजाइन पैटर्न के बीच क्या अंतर है?
- 30. Asp.Net वेब एपीआई और डब्ल्यूसीएफ सेवा के बीच क्या अंतर है?
http://techtej.blogspot.com.es/2011/03/android-thread-constructspart-4.html –
सच अच्छा यहाँ तुलना: http://stackoverflow.com/प्रश्न/15524280/सेवा-बनाम मंशा सेवा – Moemars
कृपया उपर्युक्त लिंक पर जाएं जो वे वास्तव में अच्छे हैं .. उनके लिए बहुत बड़ा धन्यवाद ... –