Android横竖屏切换测试记录

华为M6 (android 10)

1. 横竖屏切换

android:configChanges切横屏生命周期切竖屏生命周期总结
不设置onPause()
onDestroy()
onCreate()
onResume()
onPause()
onDestroy()
onCreate()
onResume()
横竖屏切换activity都只重新创建一次。
网上说的切横屏onCreate()执行一个,切竖屏onCreate()执行两次应该是android早期版本的效果,现在都只创建一次
“orientation|keyboardHidden”onPause()
onDestroy()
onCreate()
onResume()
onPause()
onDestroy()
onCreate()
onResume()
同不设置,横竖屏切换activity都只重新创建一次。
网上说的只设置这个就可以不用重新创建activity,也是android早期版本的效果,现在还需要加screenSize
“orientation|keyboardHidden|screenSize”onConfigurationChanged()onConfigurationChanged()不论怎么转都只执行onConfigurationChanged()

2. 切后台再显示

测试横竖屏时顺带测了切后台再显示,表格中三种情况都是切后台执行一次onPause(),再显示执行两次onResume()。在onRestart()方法中也打印了onResume导致认为执行了两次onResume(),其实再显示是先执行了一次onRestart(),再执行一次onResume()

具体 Activity 生命周期如下表:

首次创建跳转其它Activity
或切后台
或息屏
再显示销毁
onCreate()
onStart()
onResume()
onPause()
onStop()
onRestart()
onStart()
onResume()
onPause()
onStop()
onDestroy()

除了跳转其它Activity、切后台、息屏会触发生命周期的onPause、onStop,其它覆盖Activity的情况都不会影响生命周期,具体情况有:

  • 在容器内显示/移除Fragment
  • 在容器内显示/移除自定义View
  • 弹出/关闭Dialog
  • 弹出/关闭PopupWindow
  • 下拉显示通知栏/关闭通知栏

3. 横竖屏切换变换layout-land和layout-port布局

android:configChanges 不设置或者只设置"orientation|keyboardHidden",activity的onCreate()方法会重新执行,会重新触发setContentView(R.layout.xxxx),系统会根据屏幕横竖屏状态再次选择使用layout-land中布局还是layout-port中布局。

android:configChanges 设置"orientation|keyboardHidden|screenSize",activity只执行onConfigurationChanged(),所以横竖屏切换前显示的是layout-land和layout-port中的哪种布局,切换后显示的还是那种布局,要想切换必须在onConfigurationChanged()方法中添加对布局的改变方法,至于添加什么方法还没有好的思路。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值