Activity生命周期保存参数onSaveInstanceState()与onRestoreInstanceState()

在读android API Guides时看到关于Activity生命周期以及利用onSaveInstanceState()方法保存非持久数据,记录短暂的状态;笔者经过试验大致总结了:

首先,当开发者需要调用onSaveInstanceState()方法的情况是在用户没有明确操作退出应用,以及系统不能确定是否回收,合适回收,主要以下几种情况:

  • 在当前avtivity按Home键
  • 关闭屏幕显示
  • 在当前Activity打开新的activity 以上情况均是: 用户没有明确要退出程序,关闭avtivty 系统也不能明确合适回收以及销毁activity

在这种情况android系统对于组件的设置会自动的调用onSaveInstanceState()方法保存记忆,比如checkbox的选择状态等等;

注意:但是如果view组件没有指定id,且程序在非用户明确退出操作的情况下,(例如屏幕的旋转)是不会保存view组件的状态改变。实际上,由于系统配置configuration改变,则activity会被销毁重新创建,则需要配合
onRestoreInstanceState()或者oncreat()中重新恢复装填。

当用户在activity 暂停以后,需要保存一些非持久的数据的时候可以通过回调onSaveInstanceState()方法去存储,在activity下次刷新重启或者创建的时候通过Bundle将数据拿出来。

Activity生命周期保存参数onSaveInstanceState()与onRestoreInstanceState()_第1张图片

实际上,avitivity生命周期中也会回调onSaveInstanceState()和onRestoreInstanceState();优化activity确保按照正常逻辑运行。对于存储的暂时数据,也可以通过调用oncreat()方法,判断传入的Bundle是否为空(初次启动为空,如果不判断,程序不能正常启动),不为空则可以从中用getXXX方法拿出数据。

> Bundle类是一个key-value数据结构,可以存取基本的数据类型。

你可能感兴趣的:(Android)