今天在写一个应用的时候,因为需要设置成横屏模式,所以在Manifest里面的Activity里面加了两个参数设置:

android:screenOrientation="landscape"


android:configChanges="keyboardHidden|orientation"


这是设置屏幕方向为横屏,以及禁止在屏幕切换的时候重启Activity和隐藏键盘。横竖屏切换的知识可以看我另一篇文章。


本来是用的好好的,但是无意中在锁屏后再解锁的时候,应用会先竖屏,然后再转回横屏,而且还有一些时间间隔,于是我就去调查了一番:


首先,在所有Activity的生命周期加了一句打印LOG,发现在锁屏的时候,Activity就执行了一遍onDestroy,解锁的时候,又重新从onCreat来打开,于是就又执行了一遍onCreat里面的代码,,,这不科学,正常情况下是不会执行这两个的(除非系统内存吃紧,自动销毁,但是这个情况排除了)。


经过反复查找和DEBUG之后,又和同学同事讨论了半天,还去查看了锁屏的源代码(虽然没看懂几句),还是没有结果,,,


不过,皇天不负有心人,终于在stackoverflow上找到一大神的回答了~


问题的关键所在,就是API13以后,需要在android:configChanges
的参数里面加一个screenSize!!!


也就是:android:configChanges="screenSize|keyboardHidden|orientation"




经过我亲手真机测试,问题很干净地被解决了,妈妈再也不用担心它重复onCreate了!

更多相关文章

  1. 安卓APP开发中的屏幕适配问题如何解决?
  2. Android屏幕适配-资源文件夹命名与匹配规则
  3. 正确获取Android(安卓)IP、MAC姿势
  4. Android不同手机屏幕分辨率自适应
  5. Android之PopupWindow弹出对话框
  6. Android学习笔记19:ImageView实现图片适屏与裁剪
  7. android长度单位
  8. activity在锁屏时候的生命周期
  9. Android(安卓)主流屏幕以及适配

随机推荐

  1. Android创建和删除桌面快捷方式
  2. android 获取设备的serialNumber和Mac地
  3. Android之PULL解析和生成XML
  4. Android(安卓)BottomNavigationBar设置文
  5. Android(安卓)之 自定义适配器
  6. Mac上完美卸载Android(安卓)studio
  7. 【Android】桌面Widget动态刷新
  8. 使用Kotlin的Android(安卓)AsyncTask
  9. 【android】让popupwindow显示在view的上
  10. Android(安卓)arChartengine 导入工程出