【问题标题】:Saving Activity State in the onPause在 onPause 中保存 Activity 状态
【发布时间】:2012-01-14 15:58:49
【问题描述】:

我有一个已使用 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() 方法来保存相同的变量,并在活动不再暂停时返回,非常感谢任何关于如何执行此操作的想法

【问题讨论】:

    标签: android save double lifecycle oncreate


    【解决方案1】:

    正如您所发现的,onSaveInstanceState 仅在您需要在 Activity 被操作系统销毁后重新创建相同的所谓“实例”的情况下才有用,通常是因为它在后面太远了堆栈以在内存压力下保持活力。

    将您的数据保存在onPause 中确实是实现持久性的方法,这种持久性超出了您的 Activity 的单次执行。要使其正常工作,您有多种选择,包括:

    • 共享首选项
    • 文件
    • 数据库
    • 内容提供者

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

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

    【讨论】:

      【解决方案2】:

      您可以简单地将变量foo 分配给onPause 中的类成员mFoo,前提是您还将mFoo 保存在onSaveInstanceState 的状态包中。还原场景也是如此。

      【讨论】:

        【解决方案3】:

        如果您选择将 Activity 状态保存到 Shared Preferences,您可以查看我编写的库的 GNStateManager 组件,以便轻松存储和检索标记为 @GNState 注释的 Activity 的必填字段。使用起来非常简单。也可以保存其他单例类对象状态。有关设置和使用信息,请参见此处:https://github.com/noxiouswinter/gnlib_android/wiki/gnstatemanager

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多