Activity状态保存

onSaveInstanceState被调用的情况:

1.当前Activity即将被销毁时(内存不够用时,非用户手动销毁)会调用,即当前Activity启动一个新Activity后会被调用,或横竖屏切换也会被调用;

但是当用户点击回退按钮时就不会被调用,因为用户自己退出就没必要保存状态;
2. Activity会在父类方法默认保存一些UI的状态信息,如EditText中如果有输入文字,横竖屏切换后文字还在,但前提是要在该控件要有id标签;
如果不让自动保存状态的话,可以在View中设android:saveEnabled=false或不写id标签;
3. 该方法不能保证每次都会被调用,因此它应该保存一些UI状态信息,如果要保存很重要的数据时不能用这个方法保存,而应该在onPause中用
其他方式保存;

4.调用时机在onPause()和onStop()之间;


onRestoreInstanceState:

1.和onSaveInstanceState方法对应,如当切换横竖屏时会调用onSaveInstanceState,当切换屏幕后重新创建activity后就调用该方法

恢复状态信息;

2.onRestoreInstanceState的Bundle类型参数outState和onCreate中的savedInstanceState是一样的,也可以不用重写该方法,而把要在该方法做的操作放在

onCreate方法中,两个的区别就是调用时间不同;onRestoreInstanceState调用时机在onStart()和onResume()之间;

3. 第一次启动Activity时,onCreate中的savedInstanceState为空;


android:configChanges:  因为在activity运行期间,只要是屏幕方向改变、或语言环境改变,android系统默认的处理方式是调用onDestroy()后接着调用onCreate()以
重新加载整个activity,但可以通过android:configChanges:参数   当 参数对应配置项改变时,系统就不会重新启动activity 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值