首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >android匿名asyncTask -会导致内存泄漏吗?

android匿名asyncTask -会导致内存泄漏吗?
EN

Stack Overflow用户
提问于 2016-09-22 14:56:07
回答 1查看 2.8K关注 0票数 5

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

代码语言:javascript
运行
复制
 void startAsyncTask() {
    new AsyncTask<Void, Void, Void>() {
        @Override protected Void doInBackground(Void... params) {
            while(true);//loop  to keep thread alive forever.
        }
    }.execute();
}

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-22 14:59:21

它将保存对外部类(活动)的引用,直到任务完成。因此,它将导致活动举行的时间超过绝对必要。但是,如果任务在合理的时间内完成,这应该是可以的--在任务完成后,任务将结束,成为垃圾回收,这将使活动成为垃圾回收。更大的关注是长期线程,这些线程可以持续到活动结束后,如果编写得不好,则根本不终止。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39642438

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档