我使用以下代码将数据保存到我的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模拟器会话之间不存在吗?
- roshcler
答案 0 :(得分:0)
在“调试配置对话框”窗口的“目标”选项卡上,是否勾选了“擦除用户数据”?
答案 1 :(得分:0)
我有类似的问题。尝试卸载应用程序并重新安装。在开发过程中,您的共享首选项文件中的内容可能会损坏。
重新安装后,我的问题就消失了,我可以在应用生命周期中看到持久的值。