Android横竖屏切换的生命周期

发布时间:2019-08-06 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了Android横竖屏切换的生命周期脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

关于AndROId手机横竖屏切换时ActivITy的生命周期问题,网上有很多相似的文章,大多数都是说明在竖屏切换横屏时Activity会重启一次,而在横屏切换竖屏时Activity会重启两次。

我本身不太理解这样设计的意义,并且觉得新版本会解决这个问题,所以做了一项测试,测试环境为Android 7.0模拟器。

测试首先创建一个新的Activity,并在其各个生命周期方法内打印日志,并执行如下操作得到结果:

targetSdkVersion的值大于12时

  1. Activity启动

    I/System.out: onCreate
    I/System.out: onStart
    I/System.out: onResume
  2. 竖屏切换为横屏

    I/System.out: onconfigurationChanged
    I/System.out: onPause
    I/System.out: onSaveinstancestate
    I/System.out: onStop
    I/System.out: onDestroy
    I/System.out: onCreate
    I/System.out: onStart
    I/System.out: onReStoreInstanceState
    I/System.out: onResume
  3. 横屏切回竖屏

    I/System.out: onConfigurationChanged
    I/System.out: onPause
    I/System.out: onSaveInstanceState
    I/System.out: onStop
    I/System.out: onDestroy
    I/System.out: onCreate
    I/System.out: onStart
    I/System.out: onRestoreInstanceState
    I/System.out: onResume
  4. 配置android:configChanges="orientation|screenSize"后,竖屏切换为横屏

    I/System.out: onConfigurationChanged
  5. 配置android:configChanges="orientation|screenSize"后,横屏切回竖屏

    I/System.out: onConfigurationChanged

targetSdkVersion的值小于或等于12时

  1. Activity启动

    I/System.out: onCreate
    I/System.out: onStart
    I/System.out: onResume
  2. 竖屏切换为横屏

    I/System.out: onConfigurationChanged
    I/System.out: onPause
    I/System.out: onSaveInstanceState
    I/System.out: onStop
    I/System.out: onDestroy
    I/System.out: onCreate
    I/System.out: onStart
    I/System.out: onRestoreInstanceState
    I/System.out: onResume
  3. 横屏切回竖屏

    I/System.out: onConfigurationChanged
    I/System.out: onPause
    I/System.out: onSaveInstanceState
    I/System.out: onStop
    I/System.out: onDestroy
    I/System.out: onCreate
    I/System.out: onStart
    I/System.out: onRestoreInstanceState
    I/System.out: onResume
  4. 配置android:configChanges="orientation"后,竖屏切换为横屏

    I/System.out: onConfigurationChanged
  5. 配置android:configChanges="orientation"后,横屏切回竖屏

    I/System.out: onConfigurationChanged

总结

可以发现新版本Android设备上的运行结果和网上的结论并不完全相同,在横竖屏切换时,都会调用一次onConfigurationChanged,并重启Activity一次,具体的生命周期为:

I/System.out: onConfigurationChanged
I/System.out: onPause
I/System.out: onSaveInstanceState
I/System.out: onStop
I/System.out: onDestroy
I/System.out: onCreate
I/System.out: onStart
I/System.out: onRestoreInstanceState
I/System.out: onResume

targetSdkVersion的值小于或等于12时,配置android:configChanges="orientation"
targetSdkVersion的值小于或等于12时,配置android:configChanges="orientation|screenSize"
可以做到拦截Activity的重新创建:

I/System.out: onConfigurationChanged

后续

将会对过去版本的Android设备做相应的测试,来验证得到结果。

脚本宝典总结

以上是脚本宝典为你收集整理的Android横竖屏切换的生命周期全部内容,希望文章能够帮你解决Android横竖屏切换的生命周期所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。