2011-03-07 95 views
7

我在写一个连接到REST/JSON web服务的android应用程序。用户将获取信息,上传评论,下载和上传图片等。连接到一个web服务从android - AsyncTask或服务?

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

有了服务,我只需要在webservice的API中为每个方法提供一个公共方法。然后,我会在这些方法中实现线程化。

如果我使用了一个AsyncTask,我会创建一个帮助类,为webservice的API中的每个方法定义AsyncTasks。

哪种方法是首选?与web服务的交互只会在用户处于活动状态时发生。一旦他们切换到另一个应用程序,或退出程序,就不需要与web服务进行通信。

回答

6

我建议你去AsyncTask解决方案。这是运行UI线程的请求或任何其他后台任务的简单直接方式。

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

+1

感谢您的建议。但是,在观看此Google IO视频(http://www.google.com/events/io/2010/sessions/developing-RESTful-android-apps.html)后,我决定采用基于服务的方法。我仍然可以使用AsyncTasks来处理用户需要服务立即反馈的实例(例如发表评论)。对于简单的后台任务来说,AsyncTask似乎是最好的选择。 – football 2011-03-07 19:57:53

0

我建议IntentService,那不是更复杂的实施,肯定是更强大的,因为它不是在ActivityLifecycle如此紧密地联系在一起(尤其是onConfigurationChange()