以下是提交和回滚SharedPreferences以及一般使用它的预期/合理方法吗?
public class Settings {
private static final String PREFS_NAME = "Settings";
private static SharedPreferences preferences = null;
private static SharedPreferences.Editor editor = null;
public static void init(Context context) {
// Activity or Service what ever starts first provides the Context
if (preferences == null)
// getSharedPreference because getPreferences is a method of Activity only (not Service or Context)
preferences = context.getSharedPreferences(PREFS_NAME, 0);
editor = preferences.edit();
}
public static String getEmail() {
return preferences.getString("email", null);
}
public static void setEmail(String email) {
editor.putString("email", email);
}
public static String getPassword() {
return preferences.getString("password", null);
}
public static void setPassword(String password) {
editor.putString("password", password);
}
public static void save() {
editor.commit();
}
public static void rollback() {
editor = preferences.edit();
}
}
这是由stackoverflow编辑器强制执行的更详细信息。我真的不知道还有什么可以说的。
非常感谢专家的反馈。如果可以剪断是合理的,它可以更好地解释我在这里找到的所有其他线程。
答案 0 :(得分:0)
根据我的理解,以下方法只有一处变化。因为如果你忘记初始化首选项,你将获得空指针异常。
public static void rollback(Context context) {
if (preferences == null)
// getSharedPreference because getPreferences is a method of Activity only (not Service or Context)
preferences = context.getSharedPreferences(PREFS_NAME, 0);
editor = preferences.edit();
}
持续存在的最佳方式是 “使用优惠活动” 。查看示例并阅读有关它们的在线文档。使用 EditTextPreference 自动保留值。
首先,没有机构使用共享首选项来保存用户ID和密码。因为共享首选项是键值对。对于关键电子邮件,您只能拥有一个相应的值。这里你想要的是: - 对于密钥Email多个值和密钥密码也是多个值。
如果你想做这样的事情,有一个解决方案。 使用电子邮件ID(xyz@xyz.com)作为密钥。并且密码作为密钥的值(xyz@xyz.com)。