一个快速的理论问题。假设我有一个 Java 类,它使用了终结器和它自己的私有(private) AsyncTask 的实例,该实例未在其他任何地方引用。
现在假设 AsyncTask 的 doInBackground 方法是这样的:
while(go) {
f();
}
终结器是:
public void finalize() {
go = false;
}
当对象的所有外部引用都被删除后,AsyncTask会停止吗?或者系统会继续线程,永远不会删除对象,因为它被线程引用了?
最佳答案
Can I rely on the garbage collector to stop an AsyncTask?
不,你不能。事实上,您可以相信 GC 不会停止任务。
GC 只会终结一个已经变得不可访问的对象。但是根据定义,所有 Activity 线程都是可达的,这意味着 AsyncTask
对象也将是可达的。
关于java - 我可以依靠垃圾收集器来停止 AsyncTask 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12018528/