【问题标题】:How to save Shared Preference values even device goes to off?即使设备关闭,如何保存共享首选项值?
【发布时间】:2014-07-09 23:17:40
【问题描述】:

我正在使用SharedPreferences 将服务器数据保存在本地,当设备进入关闭状态时,SharedPreferences 中的值丢失,再次从服务器下载。

public void saveCollection(Context context)
{
    SharedPreferences settings = context.getSharedPreferences(context.getString(R.string.restore_values), 0);
    SharedPreferences.Editor e = settings.edit();
    e.clear();
    e.putStringSet(context.getString(R.string.collection), collection);
    e.commit();
}

我已经做到了,但没有运气。

【问题讨论】:

  • 你怎么知道他们没有存钱?您可能需要将代码发布到您尝试检索它们的位置,因为如果您操作正确,它们在设备关闭时存储这些值。
  • 你确定这不应该存储在 SQLite 中吗?就是想。这里的 SQLite 示例:stackoverflow.com/questions/24142830/… 另外,我不确定您获得的首选项是否实际上是特定于应用程序的。尝试从 ApplicationContext 打开 SharedPreferences。
  • 现在,“设备关闭”,我假设您的意思是睡眠模式,对吗?
  • @AndrewSchuster 不应该被称为关机
  • 这个问题似乎离题了,因为它没有提供必要的代码来提供清晰的解决方案。

标签: android


【解决方案1】:

看起来您访问的偏好设置不正确:

final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);

(假设“this”是一个上下文)

【讨论】:

    【解决方案2】:

    每个活动都会经历一个非常具体的生命周期,如the developer documentation 中所定义。看完你可能会发现,每次从焦点中取出一个Activity,都会调用内置的onPause()方法。考虑到这一点,您可以在活动中添加以下内容:

    @Override
    public void onPause() {
        super.onPause();  // Always call the superclass method first
    
        // You can call saveCollection() here and now it will always be called when
        // the activity is taken away (assuming your app doesn't force close)
        saveCollection(this);
    }
    

    【讨论】:

      【解决方案3】:

      就个人而言,我使用这种方法来获取 SharedPreferences 对象:

      SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
      

      我认为你应该在 onPause() 中调用 saveCollection()

      【讨论】:

        【解决方案4】:

        共享首选项始终存储在文件系统中,因此它们始终会在设备关闭时保存。您的问题更有可能在于读取它们而不是存储它们 - 特别是因为您不只是打开应用程序的默认共享首选项。

        【讨论】:

        • 这是一个答案吗?如果是这样,我错过了答案。
        • 一点也不。他说,当设备关闭时,他失去了共同的偏好。我是说这不可能发生,他可能在重新启动时读错了。
        • 您的“答案”仍然没有提供有关如何阅读它们的任何知识。说他只是“做错了事”并说他的假设之一不正确,这几乎不足以成为您的文本的限定条件。我宁愿将其视为评论而不是答案。因此我建议更改它,否则我将标记它,社区将决定。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-24
        • 2015-03-01
        • 2016-09-03
        • 1970-01-01
        相关资源
        最近更新 更多