【发布时间】:2011-08-11 07:19:00
【问题描述】:
我正在使用以下代码将数据保存到我的 Android 应用程序的共享首选项中:
private SharedPreferences getOurSharedPreferences() {
return getSharedPreferences(SHARED_PREFS_FILENAME, MODE_PRIVATE);
}
SharedPreferences sharedPrefs = getOurSharedPreferences();
SharedPreferences.Editor editor = sharedPrefs.edit();
editor.putString(keyName, theString);
if (!editor.commit())
throw new RuntimeException("Unable to save new string.");
// Get it back as a test.
String s2 = getStringFromStorage(keyName);
其中 SHARED_PREFS_FILENAME 是私有的最终静态字符串,而 keyName 是我当前用作字段名称的任何键的名称。提交工作正常,我没有遇到异常。如您所见,我添加了一个测试来检索最近提交的字符串,当我检查它时(s2),该值很好。因此,在我的应用程序的生命周期内,共享首选项存储没有任何问题。但是,当我在模拟器中重新启动应用程序时,共享首选项存储区域是空的,并且我找不到我在上次模拟器会话中存储的值。我做了一些阅读,据我所知,存储的值应该在会话中持续存在,显然它们保存在属于模拟器的 XML 文件中。但是我遇到了问题。
谁能告诉我为什么我的共享首选项存储值没有在 Android 模拟器会话之间持续存在?
-- 罗什克莱尔
【问题讨论】:
-
您是否在堆栈跟踪中看到与您的代码相关的任何错误或警告?
-
我遇到了同样的问题,但也在我的设备上进行测试,我运行我的应用程序,进行了一些首选项更改,一切正常,然后我停止并重新启动应用程序,更改就消失了!
-
在我的情况下,我的应用程序运行良好,直到我更改了包名称,然后一切正常,除了 sharedPreferences 持久性。你的情况也是这样吗?在您更改某些内容之前,您的应用是否正常运行,或者以前从未运行过?
标签: android xml emulation commit sharedpreferences