Android共享首选项分配在模拟器会话之间不会持久存在

时间:2011-04-23 00:36:08

标签: android xml emulation commit sharedpreferences

我使用以下代码将数据保存到我的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

2 个答案:

答案 0 :(得分:0)

在“调试配置对话框”窗口的“目标”选项卡上,是否勾选了“擦除用户数据”?

答案 1 :(得分:0)

我有类似的问题。尝试卸载应用程序并重新安装。在开发过程中,您的共享首选项文件中的内容可能会损坏。

重新安装后,我的问题就消失了,我可以在应用生命周期中看到持久的值。