您的位置:首页 > 移动开发 > Android开发

Android横向界面锁屏时生命周期异常情况处理--Activity异常销毁重建

2016-09-20 18:58 309 查看
事情很简单,原本好好的一个横屏拍摄界面,当锁屏时理应执行onpause,onstop才对,结果日志一看,销毁活动重建了,再解锁又重建了一个。

其实如果是手机开启自动旋转的话这个Bug很好理解,但是问题是如果当前界面是横屏的,哪怕你在AndroidManifes的方向设置中固定了横屏选项,但是在锁屏时还是会被销毁,走横竖屏切换流程。

类似的坑还有SurfaceView,在锁屏和按home键时,虽然Activity的生命周期是一样的,但是SurfaceView不是,按锁屏键SurfaceView不会销毁,按home键SurfaceView会销毁,并且在回到界面时重建。

解决:在AndroidManifest文件对应的activity中加入android:configChanges=”screenSize|orientation”,意思是当这两个属性变化时不要重建activity,因为android默认有一个列表,当这些列表内的属性发生变化时,会默认重建activity,加了这个声明后,就不会去重启activity了,而是会调用此活动界面的onConfigurationChanged()方法。

附表如下,当此表中的任一一个值发生变化时,activity就会被重建

VALUE DESCRIPTION

“mcc” 国际移动用户识别码所属国家代号是改变了—– sim被侦测到了,去更新mcc mcc是移动用户所属国家代号

“mnc” 国际移动用户识别码的移动网号码是改变了—— sim被侦测到了,去更新mnc MNC是移动网号码,最多由两位数字组成,用于识别移动用户所归属的移动通信网

“locale” 地址改变了—–用户选择了一个新的语言会显示出来

“touchscreen” 触摸屏是改变了——通常是不会发生的

“keyboard” 键盘发生了改变—-例如用户用了外部的键盘

“keyboardHidden” 键盘的可用性发生了改变

“navigation” 导航发生了变化—–通常也不会发生

“screenLayout” 屏幕的显示发生了变化——不同的显示被激活

“fontScale” 字体比例发生了变化—-选择了不同的全局字体

“uiMode” 用户的模式发生了变化

“orientation” 屏幕方向改变了

“screenSize” 屏幕大小改变了

“smallestScreenSize” 屏幕的物理大小改变了,如:连接到一个外部的屏幕上
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: