【发布时间】:2017-12-16 07:29:36
【问题描述】:
我正在阅读“android 最佳实践”一书。这让我对使用 AsyncTask 产生了疑问。
许多示例展示了如何在 Activity 中使用 AsyncTask 类来完成此任务。 虽然这种方法在大多数情况下都有效,但方向从纵向更改为横向或 反之亦然会产生意想不到的效果。创建 AsyncTask 的 Activity 被销毁 方向改变并以新方向重新创建。 AsyncTask 保持关联 与被破坏的活动,所以结果不能返回到新活动。此外,网络服务 在 AsyncTask 中的原始 Activity 中回调方法防止垃圾收集器 回收原始活动的内存,除非在活动时特别注意 被摧毁。使用 AsyncTask 有一些解决此问题的方法,但有更好的方法来解决 问题是使用 IntentService 类,因为它存在于 Activity 生命周期之外。
解决这个问题的方法是什么? asynctask 的使用是否正确? 连接到 Web 服务并从中获取数据的最佳方式是什么?
****************** 编辑 *******************
我的主要问题是:
1- Asynctask 的activity被销毁后如何销毁?
2- 连接到 Web 服务并从中获取数据的最佳方式是什么? intentService 或 AsyncTask 或...?
【问题讨论】:
-
这是一个适合 Loader 框架的用例,特别是 AsyncTaskLoader。
标签: android android-activity android-asynctask