2011-03-07 10 views
7

मैं एक एंड्रॉइड ऐप लिख रहा हूं जो एक आरईएसटी/जेएसओएन webservice से कनेक्ट होगा। उपयोगकर्ता जानकारी पुनर्प्राप्त कर सकते हैं, टिप्पणियां अपलोड कर सकते हैं, छवियों को डाउनलोड और अपलोड कर सकते हैं आदि।एंड्रॉइड से एक webservice से कनेक्ट - AsyncTask या सेवा?

मुझे पता है कि मुझे गतिविधि/यूआई थ्रेड में यह सभी नेटवर्क संचार नहीं रखना चाहिए, क्योंकि यह एएनआर का कारण बनता है। मैं इस बारे में उलझन में हूं कि क्या मुझे इसे पूरा करने के लिए "मैनुअल" थ्रेडिंग के साथ एक AsyncTask या सेवा का उपयोग करना चाहिए;

सेवा के साथ, मेरे पास webservice के API में प्रत्येक विधि के लिए बस एक सार्वजनिक विधि होगी। मैं फिर इन तरीकों में से प्रत्येक के भीतर थ्रेडिंग लागू करना चाहता हूं।

यदि मैंने एक AsyncTask का उपयोग किया है, तो मैं एक सहायक वर्ग बनाउंगा जो webservice के API में प्रत्येक विधि के लिए AsyncTasks को परिभाषित करता है।

कौन सी विधि को प्राथमिकता दी जाती है? Webservice के साथ बातचीत केवल तभी होगी जब उपयोगकर्ता गतिविधि में है। एक बार जब वे किसी अन्य एप्लिकेशन पर स्विच हो जाते हैं, या प्रोग्राम से बाहर निकलते हैं, तो webservice के साथ संचार की आवश्यकता नहीं होती है।

उत्तर

6

मुझे सलाह है कि आप AsyncTask समाधान के लिए जाएं। यह यूआई-थ्रेड के अनुरोधों या किसी अन्य पृष्ठभूमि कार्यों को चलाने का एक आसान और सीधा तरीका है।

यह लागू करना भी आसान है उदा। ऑन प्रोग्रेस अपडेट करें यदि आपको अपने अनुरोधों को चलाने के दौरान किसी प्रकार की प्रगति पट्टी दिखाने की ज़रूरत है।

+1

सिफारिश के लिए धन्यवाद। हालांकि, इस Google आईओ वीडियो (http://www.google.com/events/io/2010/sessions/developing-RESTful-android-apps.html) को देखने के बाद, मैंने एक सेवा आधारित दृष्टिकोण के लिए जाने का फैसला किया। मैं अभी भी उन उदाहरणों के लिए AsyncTasks का उपयोग कर सकता हूं जहां उपयोगकर्ता को सेवा से तत्काल प्रतिक्रिया की आवश्यकता होगी (उदाहरण के लिए टिप्पणी पोस्ट करना)। सरल पृष्ठभूमि कार्यों के लिए, ऐसा लगता है जैसे AsyncTask जाने का तरीका है। – football

0

मैं IntentService की सलाह देते हैं, यह बहुत अधिक लागू करने के लिए जटिल नहीं है और क्योंकि यह इतनी बारीकी से ActivityLifecycle पर (onConfigurationChange() को विशेष रूप से)

0

यह लाइब्रेरी Apache httpclient के लिए एक async आवरण प्रदान करता है बंधी नहीं है निश्चित रूप से अधिक मजबूत है एंड्रॉइड में उपलब्ध है।

http://loopj.com/android-async-http/

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