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设备做相应的测试,来验证得到结果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/260595.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第5章 Python 数字图像处理(DIP) - 图像复原与重建11 - 空间滤波 - 自适应滤波器 - 自适应局部降噪、自适应中值滤波器

标题自适应滤波器自适应局部降噪滤波器自适应中值滤波器自适应滤波器 自适应局部降噪滤波器 均值是计算平均值的区域上的平均灰度,方差是该区域上的图像对比度 g(x,y)g(x, y)g(x,y)噪声图像在(x,y)(x, y)(x,y)处的值 ση2\sigma_{\eta}^2ση2​ 为噪声的方差&am…

关闭防火墙_从零开始学Linux运维|09.关闭防火墙和SElinux

firewalld是centos7默认的防火墙安全增强型 Linux(Security-Enhanced Linux)简称 SELinux初学者建议先关闭,等熟悉了之后再来使用前期联系中的好多错误都有可能是由于没有关闭或者正确配置上面两项造成的1.临时关闭centos7下的防火墙firewalld一行命令就能够关闭firewalld--&qu…

Discuz!NT - 在线显示列表 游客 bug 修复

引发bug的条件:当你修改了系统组里面的[游客]组 的名字后!! 你会发现首页上底部的在线显示列表里始终都是显示"游客"字样而非你改过得字样!如图 至此你需要运行一个t-sql脚本去修复这个bug!(但是…

基于空间方法的图神经网络模型_用于时空图建模的图神经网络模型 Graph WaveNet | 课程上新...

课程概要本课程来自集智学园图网络论文解读系列活动。是对论文《Graph WaveNet for Deep Spatial-Temporal Graph Modeling》的解读。时空图建模 (Spatial-temporal graph modeling)是分析系统中组成部分的空间维相关性和时间维趋势的重要手段。已有算法大多基于已知的固定的图…

dataframe类型数据的遍历_Python零基础入门到爬虫再到数据分析,这些你都是要学会的...

1.必须知道的两组Python基础术语A.变量和赋值Python可以直接定义变量名字并进行赋值的,例如我们写出a 4时,Python解释器干了两件事情:在内存中创建了一个值为4的整型数据在内存中创建了一个名为a的变量,并把它指向4用一张示意图表…

第5章 Python 数字图像处理(DIP) - 图像复原与重建12 - 空间滤波 - 使用频率域滤波降低周期噪声 - 陷波滤波、最优陷波滤波

标题使用频率域滤波降低周期噪声陷波滤波深入介绍最优陷波滤波本章陷波滤波器有部分得出的结果不佳,如果有更好的解决方案,请赐教,不胜感激。 使用频率域滤波降低周期噪声 陷波滤波深入介绍 零相移滤波器必须关于原点(频率矩形中心)对称&a…

Android之Menu动态改变文字

Menu创建: Override//这里遇到一个问题add的是MenuItem的idpublic boolean onCreateOptionsMenu(Menu menu) {// TODO Auto-generated method stubmenu.add(0,1023, 0, "一");menu.add(0,1022, 1, "开启线程");Log.e("onCreateOptionsMenu…

去掉xcode中警告的一些经验

1、编译时,编译警告忽略掉某些文件 只需在在文件的Compiler Flags 中加入 -w 参数,例如: 2、编译时,编译警告忽略掉某段代码 #pragma clang diagnostic push#pragma clang diagnostic ignored "-Wmultichar"char b df;…

富士施乐3065扫描教程_全面支持IT国产化 富士施乐70款机型获统信UOS兼容认证

最近,富士施乐(中国)有限公司宣布共70款机型获得国产操作系统统信UOS的兼容认证,其中包括新一代ApeosPort旗舰智能型数码多功能机、多功能一体机/打印机、生产型数字印刷系统。这是继获得中标麒麟、龙芯和兆芯兼容认证后&#xff…

第5章 Python 数字图像处理(DIP) - 图像复原与重建13 - 空间滤波 - 线性位置不变退化 - 退化函数估计、运动模糊函数

标题线性位置不变退化估计退化函数采用观察法估计退化函数采用试验法估计退化函数采用建模法估计退化函数运动模糊函数OpenCV Motion Blur在这一节中,得到的结果,有些不是很好,我需要再努力多找资料,重新完成学习,如果…

视觉感受排序算法

1. 快速排序 介绍: 快速排序是由东尼霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n) 算法更快&…

python如何自定义函数_python如何自定义函数_后端开发

c语言特点是什么_后端开发 c语言特点是:1、语言简洁、紧凑,使用方便、灵活;2、运算符丰富;3、数据结构丰富,具有现代化语言的各种数据结构;4、具有结构化的控制语句;5、语法限制不太严度格&…

第5章 Python 数字图像处理(DIP) - 图像复原与重建14 - 逆滤波

标题逆滤波逆滤波逆滤波 逆滤波 图像的退化函数已知或者由前面的方法获取退化函数,则可以直接逆滤波 F^(u,v)G(u,v)H(u,v)(5.78)\hat{F}(u,v) \frac{G(u,v)}{H(u,v)} \tag{5.78}F^(u,v)H(u,v)G(u,v)​(5.78) F^(u,v)F(u,v)N(u,v)H(u,v)(5.79)\hat{F}(u,v) F(u, …

表示自己从头开始的句子_微信拍一拍后缀幽默回复有趣的句子 拍了拍唯美内容文案...

阅读本文前,请您先点击上面的“蓝色字体”,再点击“关注”,这样您就可以继续免费收到文章了。每天都会有分享,都是免费订阅,请您放心关注。注图文来源网络,侵删 …

HoloLens开发手记 - Unity之Tracking loss

当HoloLens设备不能识别到自己在世界中的位置时,应用就会发生tracking loss。默认情况下,Unity会暂停Update更新循环并显示一张闪屏图片给用户。当设备重新能追踪到位置时,闪屏图片会消失,并且Update循环还会继续。 此外&#xff…

运维学python用不上_不会Python开发的运维终将被淘汰?

简介 Python 语言是一种面向对象、直译式计算机程序设计语言,由 Guido van Rossum 于 1989 年底发明。Python 语法简捷而清晰,具有丰富和强大的类库,具有可扩展性和可嵌入性,是现代比较流行的语言。最流行的语言 IEEE Spectrum 的…

第5章 Python 数字图像处理(DIP) - 图像复原与重建15 - 最小均方误差(维纳)滤波

标题最小均方误差(维纳)滤波最小均方误差(维纳)滤波 目标是求未污染图像fff的一个估计f^\hat{f}f^​,使它们之间的均方误差最小。 e2E{(f−f^)2}(5.80)e^2 E \big\{(f - \hat{f})^2 \big\} \tag{5.80}e2E{(f−f^​)2…

入网许可证_入网许可证怎么办理,申请流程

移动通信系统及终端投资项目核准的若干规定》的出台,打开了更多企业进入手机业的大门,然而一些企业在关心拿到手机牌照后,是不是就是意味了拿到入网许可证,就可以上市销售。某些厂商认为:"手机牌照实行核准制,意味…

使用python matplotlib画图

本文的原文连接是: http://blog.csdn.net/freewebsys/article/details/52577631 未经博主允许不得转载。 博主地址是:http://blog.csdn.net/freewebsys 1,关于 非常简单的画图类库。 简直就是matlab的命令了。 python设计都是非常简单的。 在使用pyt…

碧桂园博智林机器人总部大楼_碧桂园职院新规划曝光!将建机器人实训大楼、新宿舍、水幕电影等...

4月10日,广东碧桂园职业学院召开院务(扩大)会议,学院党政班子领导和相关负责人出席。会议集中观看了学院四期工程的规划区介绍,并就具体方案的可行性进行了研讨。在碧桂园集团董事局主席杨国强先生的带领下,碧桂园职院正紧随集团产…