Android横竖屏切换的生命周期
关于Android
手机横竖屏切换时Activity
的生命周期问题,网上有很多相似的文章,大多数都是说明在竖屏切换横屏时Activity
会重启一次,而在横屏切换竖屏时Activity
会重启两次。
我本身不太理解这样设计的意义,并且觉得新版本会解决这个问题,所以做了一项测试,测试环境为Android 7.0
模拟器。
测试首先创建一个新的Activity
,并在其各个生命周期方法内打印日志,并执行如下操作得到结果:
在targetSdkVersion
的值大于12时
Activity
启动I/System.out: onCreate I/System.out: onStart I/System.out: onResume
竖屏切换为横屏
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
横屏切回竖屏
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
配置
android:configChanges="orientation|screenSize"
后,竖屏切换为横屏I/System.out: onConfigurationChanged
配置
android:configChanges="orientation|screenSize"
后,横屏切回竖屏I/System.out: onConfigurationChanged
在targetSdkVersion
的值小于或等于12时
Activity
启动I/System.out: onCreate I/System.out: onStart I/System.out: onResume
竖屏切换为横屏
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
横屏切回竖屏
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
配置
android:configChanges="orientation"
后,竖屏切换为横屏I/System.out: onConfigurationChanged
配置
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横竖屏切换的生命周期?
本文原创,转载请注明来自xiaoQLu http://www.cnblogs.com/xiaoQLu/p/3324503.html 开源帮助android获得了飞速的发展,开源也导致了数不清的碎片问题 ...
- android横竖屏切换方法,Android横竖屏切换的生命周期
关于Android手机横竖屏切换时Activity的生命周期问题,网上有很多相似的文章,大多数都是说明在竖屏切换横屏时Activity会重启一次,而在横屏切换竖屏时Activity会重启两次. 我本身 ...
- android屏幕旋转生命周期,Activity、Fragment生命周期---横竖屏切换的生命周期
先贴出一张大家众所周知activity流程图 onCreate():创建Activity调用,用于Activity的初始化,还有个Bundle类型的参数,可以访问以前存储的状态.onStart():A ...
- android 屏幕横竖屏切换时生命周期运行详解,创建横屏layout,has no declaration in the base
横屏代码 1.配置文件设置 android:screenOrientation="landscape" 2.java代码设置 setRequestedOrientation(Act ...
- android 横竖屏幕切换,Android 横竖屏切换总结
一.Android切换横竖屏 应用的横竖屏设置 应用的横竖屏设置主要是通过Activity的screenOrientation属性控制,属性值如下: 主要有以下两种方式设置screenOrientat ...
- android横竖屏切换动画,横竖屏切换时候Activity的生命周期
曾经遇到过一个面试题,让你写出横屏切换竖屏Activity的生命周期.现在给大家分析一下他切换时具体的生命周期是怎么样的: 1.新建一个Activity,并把各个生命周期打印出来 2.运行Activi ...
- Android 横竖屏切换
2019独角兽企业重金招聘Python工程师标准>>> Android开发中,大多APP可能根据实际情况直接将APP的界面方向设死了,或竖屏或横屏.但是,我们还是会遇到横竖屏切换的功 ...
- Android横竖屏切换
尊重原创,本文转载自 http://www.cnblogs.com/franksunny/p/3714442.html Android横竖屏切换小结 (老样子,图片啥的详细文档,可以下载后观看 htt ...
- android横竖屏切换总结
Android横竖屏切换总结 (老样子,图片啥的详细文档,可以下载后观看 http://files.cnblogs.com/franksunny/635350788930000000.pdf) And ...
最新文章
- CVPR2021 图像匹配挑战赛,双赛道冠亚军方案
- ubutu14.04无法使用sudo,也无法切换到root用户去解决问题怎么办?
- 前端php解密,转发:RSA实现JS前端加密,PHP后端解密
- boost::hana::flatten用法的测试程序
- div设置宽度,实现不等比缩放,或设置最小宽度 min-width
- H5移动页面的touch事件与点击穿透问题
- exists sql用法_干货!SQL性能优化,书写高质量SQL语句
- 如何用Python画一只机器猫?| 原力计划
- 算法竞赛入门经典训练指南
- 质疑北京大北农科技集团股份有限公司(”大北农“)停牌公告
- 机床使用教学_2020清河正规ug加工培训16年研发教学行业-工之艺
- Angular服务器端渲染
- Qt实现简单的密码加密
- 倾角传感器原理及市场现状浅析
- sun java认证真题,sun scjp考试心得_java认证
- 网站html页面显示404错误,网站怎样设置404错误页面
- 02 文本检测(一)-CTPN
- 微信8.0下载(可抓包)
- Android kotlin let函数学习
- 原生 js html 开发成桌面应用 以及打包
热门文章
- Day5:python之函数(3)
- day02 while循环 运算符 格式化输出 编码
- Linux命令基础3
- 130242014045 林承晖 第2次实验
- 算法复习——计算几何基础(zoj1081)
- [BZOJ2326] [HNOI2011] 数学作业 (矩阵乘法)
- UVALive 5903 Piece it together(二分图匹配)
- 虚拟机环境下安装ESX不能安装虚拟系统解决方案
- C++ 的基础概念(3)——多态详解。
- 如何使用三态工作流 - [MOSS 2007应用日记]