【发布时间】:2012-09-19 15:01:03
【问题描述】:
我有以下课程:
public class EnteredValues {
private HashMap<String, String> mEnteredValues;
public boolean change = false;
public boolean submit = false;
private static final EnteredValues instance = new EnteredValues();
// Singleton
private EnteredValues() {
mEnteredValues = new HashMap<String, String>();
}
public static EnteredValues getInstance() {
return instance;
}
public void addValue(String id, String value) {
if (mEnteredValues.put(id, value) != null) {
// A change has happened
change = true;
}
}
public String getValueForIdentifier(String identifier) {
return mEnteredValues.get(identifier);
}
public HashMap<String, String> getEnteredValues() {
return mEnteredValues;
}
public void clean() {
mEnteredValues.clear();
change = false;
submit = false;
}
}
该类用于管理用户已经输入的值,并且该类应该可供整个应用程序中的所有类访问。
当活动发生变化时,我通过调用 clear 方法“重置”单例。
我选择了单例模式,并没有真正考虑静态类的选项。
但现在我想知道我是否不应该只使用静态类..
处理只管理值的类的常用方法是什么? 静态类比单例更快吗?
谢谢
【问题讨论】:
-
“当活动改变时,我通过调用 clear 方法‘重置’单例。”那你为什么需要一个单例/静态类呢?
-
好点,实际上只是为了方便访问。
-
不要在这里堆砌和挑选你的设计,但你所说的“管理用户已经输入的值”到底是什么意思?似乎您只是为了避免使用 Android 的
Bundle类以及Activity.onSaveInstanceState和onRestoreInstanceState来实现这一点。为什么你不能使用它? -
每个用户会话都需要一个数据缓存。如果系统是单用户的,一个公共的静态变量就绰绰有余了。在多用户系统中,每个线程必须有自己的引用。
-
@spacemanaki 不是在activity之间传递数据。