Java Android:清理异步任务
随着时间的推移,我的应用程序使用了很多异步任务,我在调试器中注意到它们不会消失,即使它们完成了,它们仍然显示为活动线程。任务完成后,有没有办法让垃圾收集器杀死它?编辑:Lenik在下面指出,我最初的答案不是android取消任务的正确方法 AsyncTask有一个完整而优雅的取消系统。准备取消任务时,对任务调用Java Android:清理异步任务,java,android,Java,Android,随着时间的推移,我的应用程序使用了很多异步任务,我在调试器中注意到它们不会消失,即使它们完成了,它们仍然显示为活动线程。任务完成后,有没有办法让垃圾收集器杀死它?编辑:Lenik在下面指出,我最初的答案不是android取消任务的正确方法 AsyncTask有一个完整而优雅的取消系统。准备取消任务时,对任务调用cancel(true)方法。如果正在运行内部循环,请使用isCancelled()检查状态,如果返回true,请适当退出循环。这还有另外一个好处,即在调用cancel(boolean)并
cancel(true)
方法。如果正在运行内部循环,请使用isCancelled()
检查状态,如果返回true
,请适当退出循环。这还有另外一个好处,即在调用cancel(boolean)
并且doInBackground(Object[])
完成后,在UI线程上调用onCancelled(Object)
方法。然后将对任务的引用设置为null
谢谢你,莱尼克!如果你发布了一个答案,我会删除这个,这样你就可以获得积分。编辑:Lenik在下面指出,我原来的答案不是android取消异步任务的正确方法 AsyncTask有一个完整而优雅的取消系统。准备取消任务时,对任务调用
cancel(true)
方法。如果正在运行内部循环,请使用isCancelled()
检查状态,如果返回true
,请适当退出循环。这还有另外一个好处,即在调用cancel(boolean)
并且doInBackground(Object[])
完成后,在UI线程上调用onCancelled(Object)
方法。然后将对任务的引用设置为null
谢谢你,莱尼克!如果您发布了答案,我将删除此答案,以便您获得积分。完成使用后使其为null的可能重复项,通常在Activity.onDestroy()回调方法中。完成使用后使其为null的可能重复项,通常在Activity.onDestroy()中回调方法。是否有任何理由使用
isInterrupted
而不是现有的和良好的documenterisCancelled()
和AsyncTask.cancel()
?我不知道,谢谢!(将修改我的答案,或者如果您愿意回答也可以。)是否有任何理由使用isInterrupted
而不是现有的和良好的documenterisCancelled()
和AsyncTask.cancel()
?我不知道,谢谢!(我会修改我的答案,或者如果你愿意回答,也可以。)