8

在 Android 中,我有单例类,但我不确定垃圾收集器是否可以释放它。

如果垃圾收集器将释放我的单例类,如何避免它被释放?

4

3 回答 3

3

垃圾收集收集没有指向的对象,除非引用是静态的。静态字段是否为垃圾收集打开?

于 2013-03-02T16:10:19.087 回答
2

有很多方法可以实现单例。最好的之一是:

public static enum My { SINGLETON; }

某物是否是单例与它是否被 GC 无关。如果没有对它的强引用,则该对象将被 GC。查一下(http://weblogs.java.net/blog/2006/05/04/understanding-weak-references)。

还有一个有趣的问题。在 Android 中,您的应用程序不控制它的生命周期。进程可能会以您意想不到的方式终止并重新创建。如果发生这种情况,静态最终变量将被重新初始化。这里还有更多内容:

http://portabledroid.wordpress.com/2012/05/04/singletons-in-android/

于 2013-03-02T16:37:07.670 回答
1

gc 将释放您的实例的唯一原因是如果整个应用程序被破坏......

于 2013-03-02T16:08:56.607 回答