随着时间的推移,我的应用程序使用了很多AsyncTasks,我在调试器中注意到它们不会消失,即使完成它们仍然会显示为活动线程。完成任务后告诉垃圾收集器杀了它吗?
答案 0 :(得分:1)
AsyncTask有一个完整而优雅的取消系统。当您准备取消时,请在您的任务上调用cancel(true)
方法。如果您正在运行内部循环,请使用isCancelled()
检查状态,如果返回true
,则相应地退出循环。这样做的另一个好处是,在调用onCancelled(Object)
并完成cancel(boolean)
后,在UI线程上调用doInBackground(Object[])
方法。然后将对任务的引用设置为null。
谢谢Lenik!如果您发布了答案,我将删除此答案,以便您获得信用。