当前位置: 首页 > 面试题库 >

强制关闭后重置SharedPreferences

斜高翰
2023-03-14
问题内容

我已经能够在我的应用程序中成功实现“共享首选项”,但是如果我通过任务管理器杀死该应用程序,就会遇到重置/删除数据的问题。

我使用的是静态方法进行保存,因此我只需要使用一次该方法,就可以在我的应用程序中的任何地方调用它。

protected static synchronized void save(Context cntx){
    SharedPreferences preferences2 = cntx.getSharedPreferences("BluRealms", 0);
    SharedPreferences.Editor editor = preferences2.edit();
    editor.putBoolean("level", Stats.level);
    editor.commit();
}

一旦我杀死了我的应用程序,我的所有数据都将恢复为SharedPreferences保存方法中的默认设置。

我也进行了一些搜索,发现一些帖子说将android:persistent =“ true”添加到清单文件中可以解决此问题,但即使这样,数据仍会重置。

编辑: 嗯,我想我发现了一些有关我的问题的信息。此问题突出显示了三星Galaxy
S手机无法正确保存SharedPreferences(我正在测试的设备)的问题。http://code.google.com/p/android/issues/detail?id=14359-特别是
评论6

关于此的任何更多信息将是很棒的!


问题答案:

好的,我可以通过从保存方法中删除“受保护的静态”来解决此问题。

我没有调用全局保存方法,而是仅将save方法放置在需要保存的每个类中,然后仅在onPause()和onDestroy()方法中调用save方法。

我注意到,如果我在一个类中多次调用save(),这在关闭应用程序时似乎也擦除了我的SharedPreferences。

小费:

不要使用静态方法获取或设置共享首选项



 类似资料:
  • 问题内容: 这是我第一次尝试在我的应用中添加广告。我已阅读在线文档并逐字阅读。现在,我唯一不了解的部分是如何实际请求广告并将其添加到我的应用中。 到目前为止,这似乎很好。我要做的其他任何事情都将被迫关闭。例如,添加以下行: 我已将AdListener实现到Activity。 顺便说一句,当我将鼠标悬停在导入的类上时: 或其他类似的类,它表示:注意:该元素既没有附加源,也没有附加Javadoc,因此

  • 我今天一直在谷歌上搜索,但什么也找不到。我的场景如下: 我有一个Android应用程序可以自动回复收到的消息。我有下面的代码来创建一个持久的(不可刷的)通知,然后当应用程序通过onDestroy被销毁时,通知被移除。然而,当我打开recents面板并将我的应用程序扫走时,应用程序会停止自动回复服务,广播接收器也会停止,但onDestroy没有被调用,通知仍然可见。 我想简单地销毁通知,如果应用程序

  • 当我使用像或这样的IO类时,Eclipse会显示一个警告。如何使Eclipse在我自己的类未关闭时为它显示此警告? 我想知道的是,是否有一个接口或我需要实现的东西来使我的类被视为IO类,以便它独立于任何一个IDE,例如,命令行在资源未关闭时也会显示警告。

  • 我将EclipseLink与JTA一起使用。当我使用WebLogic server版本(12.2.1.3.0)运行应用程序时,遇到了以下问题 PS-WebLogic版本(12.2.1.2.0)不面临此问题

  • 我想用Java强制转换一个值。例如,将布尔值转换为泛型。我之前检查过类型,所以我知道我在做什么。但是编译器不想让我把它转换成。我怎样才能强制施法?

  • 我正在尝试使用android共享首选项,我已经记录了所有内容,下面的代码确实提交了字符串集。问题是当我强制关闭应用程序并重新启动时,settings.getStringSet返回一个空集。任何地方都没有错误消息。 我已经尝试PreferenceManager.get默认共享首选项,但这对我也不起作用。 谢谢你的时间。 稍后调用保存时: