在onPause中保存活动状态

时间:2011-12-07 04:06:18

标签: android save double lifecycle oncreate

我有一个使用onSaveInstanceState

成功保存和恢复的变量
@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState); // the UI component values are saved here.
    outState.putDouble("VALUE", liter);
    Toast.makeText(this, "Activity state saved", Toast.LENGTH_LONG).show();
}

但这仅在活动被销毁时才有效。我希望通过覆盖onPause()方法来保存相同的变量,并且当活动不再暂停时返回任何关于如何执行此操作的任何想法都非常感激

3 个答案:

答案 0 :(得分:36)

正如您所发现的,onSaveInstanceState仅在您需要在操作系统销毁后重新创建活动的同一所谓“实例”的情况下才有用,通常是因为它太过分了后卫在记忆压力下保持活力。

将您的数据保存在onPause中确实是持久性的方法,这种持久性不仅仅是单次执行您的Activity。为了实现这一目标,您有多种选择,包括:

  • 共享偏好设置
  • 文件
  • 数据库
  • 内容提供商

我建议您阅读此文档以了解有关这些选项的更多信息:

http://developer.android.com/guide/topics/data/data-storage.html

答案 1 :(得分:4)

您可以简单地将变量foo分配给mFoo中的班级成员onPause,前提是您还将mFoo保存在onSaveInstanceState的状态包中。恢复方案也是如此。

答案 2 :(得分:0)

如果您选择将活动状态保存到共享首选项,则可以查看我编写的库的GNStateManager组件,以便于存储和检索标记为@GNState注释的活动的必需字段。它很简单易用。其他单例类对象状态也可以保存。请参阅此处了解设置和使用信息:https://github.com/noxiouswinter/gnlib_android/wiki/gnstatemanager