Activity 的生命周期分为正常情况下的生命周期,以及异常情况下的生命周期,两者略有不同。上篇是正常情况,下篇是异常情况。

异常情况下,生命周期比正常情况多了两个调用方法:onSaveInstanceState 和 onRestoreInstanceState。
Activity 在运行中因为系统配置改变(如屏幕旋转)或者内存不足低优先级而被系统杀死时,会调用 onSaveInstanceState 来保存当前 Activity 的状态,类似于快照。onSaveInstanceState 的调用时机在 onStop 之前,有可能在 onPause 之前或之后。接着会重新创建 Activity。
在 Activity 在异常情况下需要被重新创建时,系统会保存当前 Activity 的视图结构,并且在 Activity 重启后为我们恢复。当 Activity 被重新创建后,系统会调用 onRestoreInstanceState ,并且把 Activity 销毁时 onSaveInstanceState 方法所保存的 Bundle 对象作为参数同时传给 onRestoreInstanceState 和 onCreate 方法。我们可以在 onRestoreInstanceState 和 onCreate 方法中取出之前保存的数据并恢复。onRestoreInsanceState 的调用时机在 onStart 之后。
- onRestoreInstanceState 在 Activity 确实被销毁时才会调用,因此 onSaveInstanceState 和 onRestoreInstanceState 未必成对使用,如用户按 HOME 键返回桌面,又立刻返回 Activity。
笔者水平有限,请使劲评论。
网友评论