18

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

4

3 回答 3

39

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

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

  • 共享偏好
  • 文件
  • 数据库
  • 内容提供者

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

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

于 2011-12-07T04:38:08.073 回答
4

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

于 2013-11-18T17:59:33.927 回答
0

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

于 2014-11-03T02:56:12.317 回答