默认共享首选项写入何处?
Where are default shared preferences written to?
我试图在第一次 运行 我的应用程序时初始化默认共享首选项。我发现根据我的操作方式,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 文件存储在哪里,为什么会有不同的行为?
我先解决你的第二个案例:
myKey = pref.getString("key", "default value");
你在这里说的是"get the value associated with "key"
, or "default value"
if nothing is"。这纯粹是一个read操作。当您通过此方法获得 "default value"
returned 时,系统实际上并不是 "initializing" 您的共享首选项存储,它只是说 "didn't find anything for "key"
, so here's that other thing you said".
接下来,您的第一个案例:
SharedPreferences.Editor editor = pref.edit();
if ((myKey = pref.getString("key", null)) == null) {
myKey = "default value";
editor.putString("key", myKey );
editor.commit();
}
在这里你对 getString()
做同样的事情,但是这次你检查它的 return 值然后执行 write 操作. if
块的主体是创建文件的内容。
我试图在第一次 运行 我的应用程序时初始化默认共享首选项。我发现根据我的操作方式,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 文件存储在哪里,为什么会有不同的行为?
我先解决你的第二个案例:
myKey = pref.getString("key", "default value");
你在这里说的是"get the value associated with "key"
, or "default value"
if nothing is"。这纯粹是一个read操作。当您通过此方法获得 "default value"
returned 时,系统实际上并不是 "initializing" 您的共享首选项存储,它只是说 "didn't find anything for "key"
, so here's that other thing you said".
接下来,您的第一个案例:
SharedPreferences.Editor editor = pref.edit(); if ((myKey = pref.getString("key", null)) == null) { myKey = "default value"; editor.putString("key", myKey ); editor.commit(); }
在这里你对 getString()
做同样的事情,但是这次你检查它的 return 值然后执行 write 操作. if
块的主体是创建文件的内容。