如何在不创建多个实例的情况下以非常紧凑的方式保存首选项(和读取)中的值 - 我希望确保我只有一个pref实例
答案 0 :(得分:2)
SharedPreferences
对象是一个自然的单身人士。您第一次使用SharedPreferences
(例如PreferenceManager.getDefaultSharedPreferences()
)阅读的电话会创建它。同一进程中的第二次和后续调用将返回相同的实例。因此,只要您对从SharedPreferences
获取{{1}}的位置保持一致,您的流程中将只有一个实例(最多)。
答案 1 :(得分:1)
CommonsWare是对的,但正如我所理解的那样,你想要以某种方式构建你的工作与偏好,我使用单身,这样的事情:
public class Preferences {
private static final String USERNAME = "username";
private static final String LOG_TAG = Preferences.class.getSimpleName();
private static Preferences sInstance;
private SharedPreferences mSharedPreferences;
private SharedPreferences.Editor mEditor;
private Context mContext;
private Preferences(Context context) {
mContext = context;
mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(mContext);
mEditor = mSharedPreferences.edit();
}
public static Preferences getInstance(Context context) {
if (sInstance == null) {
sInstance = new Preferences(context);
}
return sInstance;
}
public void setUsername(String username) {
mEditor.putString(USERNAME, username);
commit();
}
public String getUsername() {
return mSharedPreferences.getString(USERNAME, null);
}
public boolean commit() {
return mEditor.commit();
}
}
在必要的地方写
Preferences.getInstance(this).setUsername("USERNAME");
并阅读
Preferences.getInstance(this).getUsername();