在版本1中说,我没有这个SharedPreference
值。
现在,我手动将APK更新为版本2.之后我重新启动手机。但是,当我adb拉出创建的.xml文件时,它被设置为false。
SharedPreference如下:
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
boolean optimus = prefs.getBoolean("prime", true);
我认为getBoolean
将值设置为默认值,它不存在(它不是第一次初始化时)。
此xml文件是全新的,之前不存在。
为什么会这样?是否有一些我缺少的原生Android行为?
答案 0 :(得分:0)
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文件。
此外,重启手机无法清除首选项。