默认共享首选项写入哪里?

时间:2018-12-11 02:23:43

标签: android sharedpreferences default-value

我正在尝试在我的应用程序首次运行时初始化默认的共享首选项。我发现,取决于我的操作方式,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文件存储在哪里,为什么行为会有差异?

1 个答案:

答案 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块的主体是创建文件的内容。