Activity-onSaveInstanceState 和 o
1作用
onSaveInstanceState并不是activity生命周期里的方法,当发生一些系统原因导致activity销毁(比如内存不足,用户按了home键),就会调用onSaveInstanceState保存状态,但是用户按返回键就不会调用,因为用户是主动去销毁activity的,用户的行为决定了不需要去保存activity的状态,onSaveInstanceState是保存一些临时状态,而onPause适合用于数据的持久化保存
onSaveInstanceState在activity被销毁之前调用来保存每个实例的状态,然后当activity恢复时,可以调用 onCreate(Bundle)或onRestoreInstanceState(Bundle)来恢复实例的状态,传入的Bundle参数是由onSaveInstanceState封装好的
2 时机
onSaveInstanceState() 什么时候调⽤:
1长按home键,选择运行其他程序
2按电源键,关闭屏幕显示
3当从当前activity启动另一个activity
4屏幕方向发生改变,比如从竖屏切换到横屏
5系统内存不足摧毁activity等
onRestoreInstanceState()什么时候调⽤:
当activity确实由于系统原因被销毁且重建时调用,如果仅仅有这种情况的可能,是不会调用的,比如按了home键然后又重新回到activity,一般是不会由于内存的原因销毁activity的,所以一般onSaveInstanceState也不和onRestoreInstanceState成对出现,onRestoreInstanceState在onStart和onResume之间被调用
onSaveInstaceState中保存了字符串,在activity销毁重建后再去获取这个字符串,然后在oncreate或者onRestoreInstance的bundle saveInstanceState中能找到这个字符串,区别是调用onRestoreInstanceState一定有这个字符串,但调用onCreate不一定有,因为正常启动Activity,则onCreate的Bundle是空的。