Activity生命周期与configChanges巧妙运用

来源:互联网 发布:怎样开淘宝店教程视频 编辑:程序博客网 时间:2024/06/06 15:39
最近在搞一个车载Android屏幕显示,因为需要需求添加了4G功能,以前只有WIFI功能,因为是编译的Android的源码在上边,所以在插上电话卡后开机后自动打开已有的APP,发现过了几秒钟后发现屏幕会出现一个半屏的黑框把当前APP的Activity给向上挤半个屏幕,这时APP崩溃。因为不是手机不能看到错误消息,根据putty现实的logcat信息,发现当出现识别电话卡后的黑屏时,ActivityManager会发送一条消息关于你的屏幕的物理大小。之前在app中的log打印现实activity生命周期重启了,类似于横竖屏切换,开始以为是Android源码刷机后出现的bug,但是找不出来。最后想到应该是4G的问题,一行代码解决android:configChanges="mcc|mnc",因为屏幕识别了手机卡,去更新了系统设置,使APP的Activity发生了销毁再创建,如果当前Activity中没有运行别的依赖于Activity的窗口是不会有错,但是如果有依赖的话当Activity销毁时,窗口没有依赖的Activity,所以App的窗口就会出错,程序崩溃。统计了一下configChanges的属性:mnc、mcc是电话卡找到后得到的状态。locale用户改变系统语言、keyboard用户使用了外部键盘、keyboardHidden用户外部键盘隐藏、orientation横竖屏切换、screensize屏幕大小改变等.