从Android连接到Web服务——AsyncTask还是Service?

7
我正在编写一款连接REST/JSON webservice的Android应用程序。用户将检索信息、上传评论、下载和上传图片等。
我知道不能将所有这些网络通信保留在Activity/UI线程中,因为这会导致ANRs。但我不确定是否应该使用AsyncTask或Service来完成这个任务。
如果使用Service,我将为webservice API中的每个方法创建一个公共方法,然后在每个方法中实现线程。
如果使用AsyncTask,我将创建一个帮助类,为webservice API中的每个方法定义AsyncTasks。
哪种方法更好?与webservice的交互仅在用户在Activity中时发生。一旦他们切换到另一个应用程序或退出程序,就没有必要与webservice通信。
3个回答

6

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

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


1
感谢您的推荐。然而,在观看了这个Google IO视频之后(http://www.google.com/events/io/2010/sessions/developing-RESTful-android-apps.html),我决定采用基于服务的方法。对于用户需要从服务中立即获得反馈的情况(例如发布评论),我仍然可以使用AsyncTasks。对于简单的后台任务,似乎AsyncTask是最好的选择。 - football

0

0
我推荐使用 IntentService,它的实现并不复杂,但肯定更加健壮,因为它并没有与 Activity 生命周期(特别是 onConfigurationChange())如此紧密地绑定在一起。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接