【发布时间】:2014-11-12 08:42:10
【问题描述】:
我有一个扩展我的用户对象的静态单例类:
public class TestSingleton extends User{
private static TestSingleton singletonInstance;
private TestSingleton() {
}
public static TestSingleton getObj() {
if (singletonInstance == null) {
singletonInstance = new TestSingleton();
}
return singletonInstance;
}
}
单例的目的是避免在我想在不同活动中使用我的用户对象时创建新实例:
TestSingleton test = new TestSingleton();
test.doSomthing();
并且在我的应用程序生命周期中将其写在一行上并只创建一次实例:
TestSingleton.getObj().doSomthing();
我的问题是:
这种使用静态单例是否会造成内存泄漏并保留对我使用单例的任何活动的引用?
使用安全吗?还是有更好的解决方案?
【问题讨论】:
-
您确定它正在造成泄漏还是在询问我们是否会?据我所知,不会。除非
User持有对某些上下文的引用。 -
请注意,您的单例目前不是线程安全的,请注意。
-
你能用
enum完成你需要的吗? -
Activity引用了您的单身人士,而不是相反。这意味着单例不会持有对任何Activity的引用,但只有当所有持有对您的单例的引用的活动都被销毁时,单例才会被销毁 -
Fildor - 是的,我在问,User 只是一个 java 类,它的方法没有获取任何上下文或活动参数。
标签: java android memory-leaks