默认的SharedPreference值设置很奇怪

时间:2015-05-21 16:18:05

标签: android sharedpreferences

在版本1中说,我没有这个SharedPreference值。 现在,我手动将APK更新为版本2.之后我重新启动手机。但是,当我adb拉出创建的.xml文件时,它被设置为false。

SharedPreference如下:

    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
    boolean optimus = prefs.getBoolean("prime", true);

我认为getBoolean将值设置为默认值,它不存在(它不是第一次初始化时)。

此xml文件是全新的,之前不存在。

为什么会这样?是否有一些我缺少的原生Android行为?

2 个答案:

答案 0 :(得分:0)

如果此密钥的XML文件中没有值,则

getBoolean(key, defaultValue)在执行此Java语句时以编程方式返回defaultValue,因此您无法在XML文件中找到defaultValue && #39;重新谈论,除非你致电prefs.edit().putBoolean(key, myValue).apply()

修改:换句话说,prefs.getBoolean("prime", true)将始终返回true,除非您曾在任何时间点({1}}调用{应用程序的第一个版本,假设您从未卸载它或清除数据。)

答案 1 :(得分:0)

如果您更新应用程序(无需先卸载),它将保留先前版本中设置的首选项。因此,如果"prime"之前在旧版本中设置为false,那么在新版本中它仍然是false,除非在安装新版本之前首先卸载旧版本。卸载将删除旧的首选项xml文件。

此外,重启手机无法清除首选项。