繁体   English   中英

由于此$ 0变量,未对Android内部类进行垃圾回收

[英]Android inner classes not being garbage collected because of this$0 variable

我是Android的初学者,但似乎遇到了一个问题,即我的Activity从未被垃圾回收,因为在线程的非静态内部类中仍然有对Activity的引用,该变量称为this $ 0我通过在Eclipse中使用MAT找到了它。 以下是我当前的设置。

public class MyActivity
-->class MySurfaceView
---->class MyThread

当试图查找有关是否可以删除最后一个实例的信息时,在这里找到一篇非常有用的文章之后,我似乎找不到。

如果您无法控制非静态内部类的生命周期,请避免使用它们的生命周期,请使用静态内部类并对内部的活动进行弱引用。 解决此问题的方法是使用带有WeakReference的静态内部类到外部类,例如在ViewRoot及其W内部类中进行的操作

因此,似乎我不应该使用此内部类系统或WeakReferences。

我的问题是,为什么示例项目使用没有WeakReferences的内部类系统? 他们还在收集垃圾吗? 还是他们设计为不处理垃圾收集?

我的应用程序是否可能有代码问题,这意味着我应该更正代码并仍然保留内部类? 还是应该分开类(或引入WeakReferences)?

您可以使用内部类使它们变为静态,并为父级提供弱引用。 还可以在应用程序上下文中存储长期存在的对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM