在Android中我有单例类,但我不确定垃圾收集器是否可以解除分配。
如果垃圾收集器将解除分配我的单例类,如何避免重新分配?
答案 0 :(得分:3)
垃圾收集会收集没有指向任何内容的对象,除非引用是静态的。 Are static fields open for garbage collection?
答案 1 :(得分:1)
gc将处理您的实例的唯一原因是整个应用程序都被销毁了......
答案 2 :(得分:1)
有很多方法可以实现Singleton。其中最好的是:
public static enum My { SINGLETON; }
某件事物是否是单身人士与是否是GCed无关。如果没有强引用,则对象将被GC。查找(http://weblogs.java.net/blog/2006/05/04/understanding-weak-references)。
还有一个问题值得关注。在Android中,您的应用程序无法控制它的生命周期。进程可能会以您不期望的方式终止和重新创建。如果发生这种情况,将重新初始化静态最终变量。这里有更多内容:
http://portabledroid.wordpress.com/2012/05/04/singletons-in-android/