事情很简单,原本好好的一个横屏拍摄界面,当锁屏时理应执行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是移动网号码,最多由两位数字组成,用于识别移动用户所归属的移动通信网