the*_*itz 5 java singleton static android
我有一个单身课程.
当访问类的方法时,我可以选择两种可能性.
例如:
Class Test{
private int field1;
Test instance;
private Test(){};
private Test getInstance(){
if (instance == null)
instance = new Test();
return instance;
}
public int method1() { return field1;}
public static int method2() {return getInstance().field1;}
}
Run Code Online (Sandbox Code Playgroud)
现在,我可以写别处
int x = Test.getInstance().method1();
int y = Test.method2();
Run Code Online (Sandbox Code Playgroud)
哪个更好?我可以想到第三种方法,我在静态方法中直接使用"instance",然后捕获异常,如果它是null并实例化它然后重新调用它自己.
从理论上讲,我可以让整个静止.但是,由于序列化不能保存静态,因此在将状态保存在活动结束时会产生问题.
我认为第一个更干净。
但是,请记住,在某些极端情况下,Android 可能会杀死您的静态实例。例如,请参阅: http: //code.google.com/p/acra/。
我在某个地方找到了一个解决方法,就是从 Application 类中保留对单例的引用。但我不知道这是否能解决问题。