想象一下,一个典型的场景,一个活动打开,需要调用REST HTTP API来获取一些内容,并且一旦收到更新UI。很明显,API调用需要在单独的线程上完成,但是应该使用AsyncTask,IntentService还是其他方法完成,为什么?从IntentService或AsyncTask进行REST API调用?
20
A
回答
12
我会推荐IntentService
和ResultReceiver
的组合,如this post中所述。
也看看Google iosched实现这个模型。 2010版本显示如何使用onRetainNonConfigurationInstance
,getLastNonConfigurationInstance
和一个静态类在配置更改(即屏幕旋转)上保持ResultReceiver
。
我已经在应用程序中成功实现了这个模型。如果您对提供的链接有任何疑问,请告知我们。
编辑:我忘了“为什么”的问题;)
AsyncTask
被tighly势必活动,它不会很好地处理配置更改。在活动寿命内的短期任务(onResume
和之间)很好。我将HttpClient
用于我的REST API调用,连接超时和套接字超时设置为20秒(由于移动网络不佳...)。这意味着API调用可以持续40秒。你一定要在服务中处理这样一个长期任务,而不是AsyncTask
。
相关问题
- 1. Android应该使用AsyncTask还是IntentService来进行REST API调用?
- 2. IntentService,Service或AsyncTask
- 3. 使用GoogleApiClient进行REST API调用
- 4. 从REST API调用报告
- 5. 我应该从Quartz job调用Grails控制器来进行REST API调用吗?
- 6. IntentService vs AsyncTask登录活动?
- 7. Asynctask API调用问题
- 8. 从IntentService更新进度条?
- 9. 使用Angular.js进行WordPress V2 API的基本REST调用
- 10. 进行API调用并行
- 11. 从AsyncTask调用SensorManager?
- 12. 从runnable调用asynctask
- 13. cURL调用REST Api
- 14. REST API调用await
- 15. 使用OAuth进行Spring Rest API
- 16. 使用REST API进行身份验证
- 17. 使用Java Rest API进行PayPal登录
- 18. 使用Rally Rest API进行CRUD操作
- 19. Twitter Finagle客户端:如何进行外部REST API调用?
- 20. 在Visual Studio 2013中进行REST API调用
- 21. 对DocuSign签名REST API进行Ajax调用?
- 22. 调试JIRA Rest Api调用
- 23. 我应该从Activity还是IntentService调用RESTful Api?
- 24. 如何从另一个AsyncTask调用AsyncTask?
- 25. 从另一个AsyncTask调用一个AsyncTask
- 26. 从Ruby脚本中调用Elasticsearch Rest API
- 27. 从PowerShell脚本调用REST API
- 28. 从Java Spring MVC调用Node.Js Rest API(POST)
- 29. 从django视图调用REST API
- 30. 无法从浏览器调用REST API
我对@hleroy有个疑问,那么何时应该启动IntentService OnResume(),OnStart()或OnClickEventListener(),因为我需要使用SharedPreference在本地保存以供离线使用。举例来说,我需要从使用Webservice的服务器(在我的情况下,WCF web api)中在UI中列出200名学生,那么我应该在哪里放这行代码'//启动intent服务//运行Intent Service // Intent downloadIntent = new Intent (this.Context,typeof(StudentIntentService)); //this.Context.StartService(downloadIntent);' –