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” 屏幕的物理大小改变了,如:连接到一个外部的屏幕上
其实如果是手机开启自动旋转的话这个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” 屏幕的物理大小改变了,如:连接到一个外部的屏幕上
相关文章推荐
- VR Android播放器实现(二)
- Android自定义音量调节
- Android 7.0 四大新改进
- [置顶] 使用adb查看android程序的包名以及栈顶的activity名
- Android之View的事件体系
- Android Bitmap 和 ByteArray的互相转换
- android 解决输入法键盘遮盖布局问题(不适合带listview的布局)
- use addr2line in android
- Android--Dialog
- NFC 基础知识(NFC Basics) 根据官网个人翻译
- a ae46 ndroid第一篇:inputType的常用取值
- Android一点 修改jar的内容
- Android 应用程序集成FaceBook 登录及二次封装
- Android AsyncTask异步任务的使用
- Android Facebook和Twitter登录和分享完整版
- 常用控件含义,属性,继承关系
- Android——IPC机制(二)进程间通信方式
- android的SparseArray
- android的logcat的字符长度的限制,超过将直接截断
- Android——IPC机制(一)IPC概念以及Binder机制