连接到Android的Web服务 - AsyncTask或服务?

时间:2011-03-07 08:09:18

标签: android web-services service android-asynctask

我正在编写一个将连接到REST / JSON Web服务的Android应用程序。用户将检索信息,上传评论,下载和上传图像等。

我知道我不应该在Activity / UI线程中保留所有这些网络通信,因为它会导致ANR。我感到困惑的是我是否应该使用AsyncTask或带有“手动”线程的服务来实现这一目标;

使用Service,我只需要为webservice的API中的每个方法提供一个公共方法。然后我会在每个方法中实现线程。

如果我使用AsyncTask,我会创建一个帮助程序类,为Web服务的API中的每个方法定义AsyncTasks。

首选哪种方法?只有当用户在Activity中时,才会与webservice进行交互。一旦他们切换到另一个应用程序,或退出程序,就不需要与Web服务进行通信。

3 个答案:

答案 0 :(得分:6)

我建议您选择AsyncTask解决方案。它是一种简单直接的方式来运行UI线程的请求或任何其他后台任务。

它也很容易实现,例如onProgressUpdate如果您需要在运行请求时显示某种进度条。

答案 1 :(得分:0)

我建议使用IntentService,它实现起来并不复杂,并且肯定更加强大,因为它与ActivityLifecycle(特别是onConfigurationChange())没有密切联系。

答案 2 :(得分:0)

此库为Android中提供的Apache httpclient提供了异步包装。

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