我正在尝试在我的应用程序首次运行时初始化默认的共享首选项。我发现,取决于我的操作方式,Android文件系统上的共享首选项文件存在差异。
如果我使用以下代码专门写给共享首选项,则XML文件位于/ data / data / myapp / shared_prefs /中:
SharedPreferences.Editor editor = pref.edit();
if ((myKey = pref.getString("key", null)) == null) {
myKey = "default value";
editor.putString("key", myKey );
editor.commit();
}
但是,如果我使用以下单行代码初始化默认值,则在/ data / data / myapp / shared_prefs /中看不到XML文件:
myKey = pref.getString("key", "default value");
在后一种情况下,XML文件存储在哪里,为什么行为会有差异?
答案 0 :(得分:0)
我先解决您的第二种情况:
myKey = pref.getString("key", "default value");
您在这里所说的是“获取与"key"
或"default value"
关联的值(如果没有的话)。这纯粹是 read 操作。当您从此方法返回"default value"
时,系统实际上并没有在“初始化”您的共享首选项存储,而是在说“ "key"
找不到任何东西,所以这就是您所说的” “。
接下来,您的第一种情况:
SharedPreferences.Editor editor = pref.edit(); if ((myKey = pref.getString("key", null)) == null) { myKey = "default value"; editor.putString("key", myKey ); editor.commit(); }
此处,您对getString()
执行与上述相同的操作,但是这次您检查其返回值,然后执行 write 操作。 if
块的主体是创建文件的内容。