2011-04-23 14 views
4

我使用下面的代码将数据保存到我的Android应用程序的共享偏好: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

您是否在与您的代码相关的堆栈跟踪中看到任何错误或警告? – rajath 2011-04-23 01:50:09

+0

不,我不是。谢谢。 – 2011-04-23 03:52:56

+0

我有同样的问题,但也在我的设备中测试,我运行我的应用程序,进行一些首选项更改,一切正常,然后停止并重新启动应用程序,并且更改已经结束! – maid450 2011-04-29 10:32:41

回答

0

在调试配置对话框窗口的目标选项卡,你有“擦除用户数据”打勾?

+0

这不会删除应用程序本身吗? – rajath 2011-04-23 01:48:48

+0

我在问是否打勾,因为如果是,它会擦除​​所有用户数据。显然,他的用户数据被抹去了,因为他的代码看起来很实在。 :) – Dan 2011-04-23 01:49:44

+0

因此,如果勾选了“擦除用户数据”,那么即使应用程序已卸载。 – rajath 2011-04-23 01:53:21

0

我有一个类似的问题。尝试卸载应用程序并重新安装。在开发时,共享偏好文件中的东西可能会损坏。

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