异常情况包括两种
1. 资源相关的系统配置发生改变导致Activity被杀死后并重新创建。
2. 内存不足导致的低优先级Activity被杀死。
第一种情况包括的操作有:屏幕方向旋转,系统语言设置改变改变(系统语言改变会导致app去app内对应string资源中去加载语言)等
例如:
(1)当启动一个Activity,然后回到桌面,去设置中修改语言,然后再次点击该应用图标开启该应用时,activity的生命周期如下
当按下home键时(蓝色框)执行了onStop,在修改完系统语言后,再次回到应用时(黄色框),这时才执行了onDestroy,然后新创建了activity
(2)当前activity正在显示时旋转屏幕并导致屏幕显示方向改变时,activity的生命周期如下
该情况和上面相同。
总结: 当资源相关的系统配置改变时,会销毁原activity,onPause,onStop,onDestroy都会执行,并会调用onSaveInstanceState(先于onStop方法执行),
当activity被重新创建后,会执行onCreate和onRestoreInstanceState,并把销毁前保存的数据传进来。onRestoreInstanceState只有异常终止activity并重新创建后才会调用,但onSaveInstanceState每次都会执行,不管activity是否异常终止(小米note 4.4.4,安卓6.0模拟器亲测都会执行,与android开发艺术探索中第9页描述有出入,另外书中说activity异常终止时,会自动调用所有view 的onSaveInstanceState方法,实测不管是异常终止Activity还是正常终止,都不会调用view的onSaveInstanceState方法)。