gpt4 book ai didi

java - android anonymous asyncTask - 它会导致内存泄漏吗

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:58:14 25 4
gpt4 key购买 nike

在 android 中,我试图防止内存泄漏。我继承了一些遗留代码,开发人员在其中创建了一个 asyncTask 作为匿名内部类,如下所示:

 void startAsyncTask() {
new AsyncTask<Void, Void, Void>() {
@Override protected Void doInBackground(Void... params) {
while(true);//loop to keep thread alive forever.
}
}.execute();
}

所以我在这个例子中使用了一个循环,只是为了让子线程永远保持 Activity 状态,这样我就可以演示我的观点。所以从 Activity 中如果我调用 startAsyncTask() 会不会有内存泄漏?该类没有 Activity 引用,但我意识到匿名类实际上是一个非静态内部类,因此持有对外部类的引用。那么这本身就是内存泄漏是真的吗?

最佳答案

它将持有对外部类(Activity)的引用,直到任务完成。因此,这将导致 Activity 举行的时间超过绝对必要的时间。但是,如果任务在合理的时间内完成,那应该没问题 - 完成后任务将结束并变为可回收垃圾,这将使 Activity 可回收垃圾。更大的问题是长期线程,它可以在 Activity 结束后持续很长时间,或者如果写得不好,根本不会终止。

关于java - android anonymous asyncTask - 它会导致内存泄漏吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39642438/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com