在onPause中保存活动状态

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()方法来保存相同的变量,并在活动不再暂停时获取它,有什么想法吗?非常感谢!

3个回答

39

正如你所发现的那样,onSaveInstanceState仅在需要在操作系统销毁活动后重新创建同一“实例”时才有用,这通常是因为它已经存在于太多活动堆栈中,无法在内存压力下保持活动状态。

将数据保存在onPause中确实是持久性持续到你的Activity多次执行的推荐方式。要使其正常工作,你有几种选择,包括:

  • 共享首选项(Shared Preferences)
  • 文件
  • 数据库
  • 内容提供程序(Content Providers)

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

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


4

onPause中,您可以将变量foo赋值给类成员mFoo,前提是您还在onSaveInstanceState中将mFoo保存在状态捆绑包中。恢复场景也是同样的方法。


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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接