在我目前的Android应用程序中,我创建了一个Singleton对象,负责与Secure Element进行通信,并在内部存储中将一些秘密存储在文件中。
现在的情况就像用户想要更改安全元素一样他可以拔掉它并重新插入它,当他这样做时,他会被要求清除应用程序中的数据。
由于我当前的应用程序的进程(即使我已经关闭了我的所有活动)也没有被杀死,但我的Singleton对象没有被清除。
但是我想重置我的Singleton对象的状态,或者说我想创建新的Singleton对象并删除之前的对象。
以下是我的实施:
public class SEManager {
private static SEManager INSTANCE = null;
private SEManager() {
}
public static void init() throws Exception {
if (INSTANCE != null) {
throw new Exception("Invalid Operation");
}
INSTANCE = new SEManager();
}
public static SEManager getInstance() {
return INSTANCE;
}
}
我很困惑如何重置对象状态或删除它的引用。 记住一个解决方案是
public static synchronized void reset(){
INSTANCE = null;
}
但我无法弄清楚它的缺点。
答案 0 :(得分:0)
我只是在创建时初始化单例实例而不是懒惰 - 然后,在重置时,您可以简单地用新对象替换INSTANCE
。
public static synchronized void reset(){
INSTANCE = new SEManager();
}