异步任务和游标如何导致内存泄漏?

时间:2016-06-21 04:41:48

标签: android

希望对方向更改的异步任务如何导致内存泄漏有更深入的理解。我做了一些研究,但找不到精确的解决方案

2 个答案:

答案 0 :(得分:0)

通常当方向改变时,Android框架会破坏活动(垃圾收集分配的内存)并创建一个新的。

现在假设您正在运行AsyncTask,其中包含对Activity类对象的引用以及方向更改。在这里,Android框架将无法销毁活动(因为它仍由AsyncTask引用),而新的框架将在其位置创建。这是内存泄漏发生的方式之一。

答案 1 :(得分:0)

当你创建一个AsyncTask的实例时,你使用&#34来传递活动的引用;这个"或背景。如果在asyncTask工作时旋转设备,则会重新创建活动,并且以前的实例仍然可用于AsyncTask,从而导致内存泄漏。

最佳做法是在postExecute中检查yourActivity.this.isFinishing()并且不要更新UI。您可以使用cancel()方法取消asyncTask。