每日一问(十一)onSaveInstanceState调用时机

2021-08-03  本文已影响0人  我在吉安打螺丝

Activity的状态通常情况下系统会自动保存的,只有当我们需要保存额外的数据时才需
要使用到这样的功能。
通常情况:
调用onPause()和onStop()方法后的activity实例仍然存在于内存中, activity的所有信息
和状态数据不会消失, 当activity重新回到前台之后, 所有的改变都会得到保留。
异常情况:
但是当系统内存不足时, 调用onPause()和onStop()方法后的activity可能会被系统摧毁,
此时内存中就不会存有该activity的实例对象了。如果之后这个activity重新回到前台, 之
前所作的改变就会消失。
为了避免数据消失:
我们可以覆写onSaveInstanceState()方法。onSaveInstanceState()方法接受一个Bundle类
型的参数, 开发者可以将状态数据存储到这个Bundle对象中, 这样即使activity被系统
摧毁, 当用户重新启动这个activity而调用它的onCreate()方法时, 上述的Bundle对象会
作为实参传递给onCreate()方法, 开发者可以从Bundle对象中取出保存的数据, 然后利
用这些数据将activity恢复到被摧毁之前的状态。
需要注意的是:
onSaveInstanceState()方法并不是一定会被调用的, 因为有些场景是不需要保存状态数据
的. 比如用户按下BACK键退出activity时, 用户显然想要关闭这个activity, 此时是没有
必要保存数据以供下次恢复的, 也就是onSaveInstanceState()方法不会被调用. 如果调用
onSaveInstanceState()方法, 调用将发生在onPause()或onStop()方法之前。
android onSaveInstanceState调用时机详细总结
Android onSaveInstanceState和onRestoreInstanceState调用时机

上一篇下一篇

猜你喜欢

热点阅读