Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android:清理异步任务_Java_Android - Fatal编程技术网

Java Android:清理异步任务

Java Android:清理异步任务,java,android,Java,Android,随着时间的推移,我的应用程序使用了很多异步任务,我在调试器中注意到它们不会消失,即使它们完成了,它们仍然显示为活动线程。任务完成后,有没有办法让垃圾收集器杀死它?编辑:Lenik在下面指出,我最初的答案不是android取消任务的正确方法 AsyncTask有一个完整而优雅的取消系统。准备取消任务时,对任务调用cancel(true)方法。如果正在运行内部循环,请使用isCancelled()检查状态,如果返回true,请适当退出循环。这还有另外一个好处,即在调用cancel(boolean)并

随着时间的推移,我的应用程序使用了很多异步任务,我在调试器中注意到它们不会消失,即使它们完成了,它们仍然显示为活动线程。任务完成后,有没有办法让垃圾收集器杀死它?

编辑:Lenik在下面指出,我最初的答案不是android取消任务的正确方法

AsyncTask有一个完整而优雅的取消系统。准备取消任务时,对任务调用
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
而不是现有的和良好的documenter
isCancelled()
AsyncTask.cancel()
?我不知道,谢谢!(将修改我的答案,或者如果您愿意回答也可以。)是否有任何理由使用
isInterrupted
而不是现有的和良好的documenter
isCancelled()
AsyncTask.cancel()
?我不知道,谢谢!(我会修改我的答案,或者如果你愿意回答,也可以。)