android Activity切换屏 生命周期变化问题

最近看到 onSaveInstanceStateonRestoreInstanceState,发现有以下几种情况会调用 onSaveInstanceState
1、当用户按下HOME键时
     这是显而易见的,系统不知道你按下HOME后要运行多少其他的程序,自然也不知道activityA是否会被销毁,故系统会调用onSaveInstanceState,让用户有机会保存某些非永久性的数据。以下几种情况的分析都遵循该原则
2、长按HOME键,选择运行其他的程序时。
3、按下电源按键(关闭屏幕显示)时。
4、从activity A中启动一个新的activity时。
5、屏幕方向切换时,例如从竖屏切换到横屏时
   在屏幕切换之前,系统会销毁activity A,在屏幕切换之后系统又会自动地创建activityA,所以onSaveInstanceState一定会被执行

记得屏幕方向切换时确实是会销毁与重建的,但是设置android:configChanges=“orientation|keyboardHidden”时,是不会重新调用的。

然后就看到网上有这些总结:(14年某个博主写的)

1、不设置Activity的Android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次

2、设置Activity的android:configChanges="orientation"时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次

3、设置Activity的android:configChanges="orientation|keyboardHidden"时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法。(执行这个方法,必须设置sdk version 大于等于13.0)

然后,我对”切竖屏执行两次“感到不解,然后又再网上找了资料:(两个说法)
1,当推出键盘的时候,会触发硬件的改变,使手机竖屏变成了横屏2,当推进键盘的时候,合上手机的一刻,触发的是同一样的固件,由于,固件是无法辨别那个是推进,和推出,发出的是一样的信号,然后系统就会认为这是一个横屏改变。
2.实际上,模拟器的翻转是以一个逆时针的方向旋转...你按两次 ctrl + f11实际上是翻转了三次...

但是,我在我的华为荣耀6上,系统为4.4上切换横屏和竖屏,最后的结果是这样的:

1、不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行一次。
2.设置Activity的android:configChanges="orientation"时,切屏还是会重新调用各个生命周期,切横执行一次再切回竖屏时并不会重新调用。
3.设置Activity的android:configChanges="orientation|keyboardHidden”时,和2反应一样。
4.设置Activity的android:configChanges=“orientation|screeSize”时,切屏不会重新调用各个声明周期。

由此看来系统不同会导致切屏出现不同的反应,查看网上资料发现,好像手机品牌不同也会出现不同的反应。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值