从IntentService或AsyncTask进行REST API调用?

Oll*_*e C 21 android android-asynctask intentservice

想象一下,一个活动打开的典型场景,需要调用REST HTTP API来获取一些内容,并且一旦收到更新UI.显然,API调用需要在单独的线程上进行,但是应该使用AsyncTask,IntentService还是其他方法完成,为什么?

小智 13

我会推荐的组合IntentServiceResultReceiver,如在这个岗位.

还可以看看实现此模型的Google iosched.2010版展示了如何在坚持ResultReceiver翻过配置更改使用(即屏幕旋转)onRetainNonConfigurationInstance,getLastNonConfigurationInstance和一个静态类.

我已在应用程序中成功实现了此模型.如果您对提供的链接有任何问题,请与我们联系.

编辑:我忘记了"为什么"的问题;)

AsyncTask与活动紧密相关,它不会处理好配置更改.它适用于活动生活中的短期任务(在onResume和之间onPause).我正在使用HttpClient我的REST API调用,连接超时和套接字超时设置为20秒(由于移动网络不良......).这意味着API调用可以持续长达40秒.你肯定想在服务中处理这么长的任务而不是AsyncTask.