这张图片大家并不陌生,你看懂了么,不要因为英文不好就不看api文档,只要认真看,不懂的就百度,相信很快你就习惯看英文的api文档了
左边的大致的流程:app内存不足,这时候,就会销毁不可见的activity,这时候开始调用onSaveInstanceState(),保存activity的状态,这个状态通过onCreate()或者onRestoreInstanceStante()获取到
右边的大致的流程:不可见的activity没有被销毁掉,此时用户重新进入activity,这是调用生命周期中的onRestart(),重新启动activity(并没有新建activity),那么就不需要保存activity的状态。
这里主要有几点,就是onSaveInstanceState使用的时机,在activity不是人为finish掉的情况下,有以下几点:
1.按home键的时候,系统不知道activity是否被销毁,让用户保存非永久性数据。
2.从一个activity启动新的activity的时候
3.横竖屏的切换(因为这里会重新创建activity,类似2)
4.按下电源键(屏幕显示关闭时)
总之,调用onSaveInstanceSate的方法,遵守这样的规则,就是activity在未经你许可的情况下,被销毁掉,这时候系统就有责任调用它,提供一个保存非永久性数据的机会。