Android:正确销毁asyncTask?

时间:2011-04-21 09:14:59

标签: android thread-safety android-asynctask

我正在使用asyncTask()在我的活动进行时进行位图交换,所有工作都很好;直到我结束任务所在的活动。任务的线程进入“等待”状态而不是被销毁?我已取消,并检查了.isCancelled()的返回值。这不会是一个问题,除非我再次从MAIN活动重新启动我的活动,它实际上会为新的asyncTask()创建一个新线程;从而让旧的人坐在那里“等待”在后台?这是一个错误,还是我只是错误地使用了这个功能?

2 个答案:

答案 0 :(得分:3)

AsyncTask使用线程池。在调试面板中看到4/5异步任务是正常的。只需确保您的异步任务不包含对活动的强引用(尝试将这些异步任务设置为静态内部类(或事件单独的类),并让它们将WeakReference保存到活动而不是强引用。

答案 1 :(得分:0)

我认为你应该在doInBackground函数中使用静态标志变量来终止操作或循环。这样你就可以完成任务

相关问题