前段时间在做项目的时候发现一个很奇怪的现象,在应用中按下锁屏键后再解锁,发现应用自动结束了。一开始以为是占用内存太多系统结束了应用,后来感觉这个很影响用户体验,决定自己查一下这个问题的根源。

仔细阅读代码后发现,确实是应用内有一处代码使得应用在锁屏后自动结束了。该处代码是在onCreate中通过keyguardmanager判断设备是不是处于锁屏状态,如果是锁屏状态则结束应用。打印日志后发现,每次解锁的时候都会重新onCreate一次,这个使我很不解,为什么每次解锁的时候都会重新走一遍activity的生命周期。这个问题困扰了我两天的时间没有想明,后来偶然间想到可能是横竖屏切换导致了该问题。由于我是做游戏的,且游戏是横屏的,锁屏后手机默认回到了竖屏的状态,当解锁后需要横屏一次,这个时候Android 3.2以上的版本会默认走一边activity的所有生命周期,就是由于这个原因导致了activity的重新创建,进而导致了调用onCreate里面的结束应用的代码,最终导致了解锁后应用被杀死的情况。

原因是找到了,这样子的用户体验是非常差的,所有需要寻找解决方案。在我所知道的知识范围内我无法解决,只好通过google,百度,stackoverflow上寻找答案。最后基本的解决方法就是在android:configChanges里设置”orientation|screenSize”,确保activity横竖屏切换时不调用onCreate函数。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.portorland"android:versionCode="1"android:versionName="1.0" ><uses-sdk
        android:minSdkVersion="8"android:targetSdkVersion="17" /><application
        android:allowBackup="true"android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme" ><!--可以通过以下两个属性指定该Activity是横屏或竖屏显示竖屏  android:screenOrientation="portrait" 横屏  android:screenOrientation="landscape"自从Android 3.2(API 13),screen size也开始跟着设备的横竖切换而改变如果你想阻止程序在运行时重新加载Activity,除了设置"orientation",你还必须设置"ScreenSize"。解决方法:AndroidManifest.xml中设置android:configChanges="orientation|screenSize“--><activity
            android:name="com.example.portorland.MainActivity"android:configChanges="orientation|screenSize"android:label="@string/app_name" ><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application><!-- <uses-permission android:name="android.permission.CHANGE_CONFIGURATION" ></uses-permission> --></manifest>
<activity
            android:name="com.example.portorland.MainActivity"android:configChanges="orientation|screenSize"android:label="@string/app_name" ><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter>
</activity>

这次解决的这个问题,看似简单,如果对android的机制不是很了解会找很久,我就掉进了这个坑里,希望看到我这边文章的你不要走我的老路。

最后感谢大家的支持,我会继续更新我的博客的,希望大家多多支持我!

android横竖屏切换生命周期相关推荐

  1. android 横竖屏幕切换,Android 横竖屏切换总结

    一.Android切换横竖屏 应用的横竖屏设置 应用的横竖屏设置主要是通过Activity的screenOrientation属性控制,属性值如下: 主要有以下两种方式设置screenOrientat ...

  2. Android 横竖屏切换

    2019独角兽企业重金招聘Python工程师标准>>> Android开发中,大多APP可能根据实际情况直接将APP的界面方向设死了,或竖屏或横屏.但是,我们还是会遇到横竖屏切换的功 ...

  3. Android横竖屏切换

    尊重原创,本文转载自 http://www.cnblogs.com/franksunny/p/3714442.html Android横竖屏切换小结 (老样子,图片啥的详细文档,可以下载后观看 htt ...

  4. android横竖屏切换总结

    Android横竖屏切换总结 (老样子,图片啥的详细文档,可以下载后观看 http://files.cnblogs.com/franksunny/635350788930000000.pdf) And ...

  5. Android—横竖屏切换小结

    Android横竖屏切换小结 (老样子,图片啥的详细文档,可以下载后观看 http://files.cnblogs.com/franksunny/635350788930000000.pdf) And ...

  6. Android横竖屏切换View设置不同尺寸或等比例缩放的自定义View的onMeasure解决方案(2)...

    Android横竖屏切换View设置不同尺寸或等比例缩放的自定义View的onMeasure解决方案(2) 附录文章1以xml布局文件方式实现了一个view在横竖屏切换时候的大小尺寸缩放,实现这种需求 ...

  7. 手机加速度传感器在Android横竖屏切换中的应用

    文章目录 如何判断手机的横竖屏 使用加速度计实现 接口使用 使用加速度计和磁力计获取手机倾斜角度 加速度传感器在Android横竖屏切换中的应用 如何判断手机的横竖屏 这个问题依赖与手机上的传感器 一 ...

  8. android横竖屏切换函数,Android横竖屏切换小结.PDF

    Android横竖屏切换小结 Android横竖屏切换小结 Android手机或平板都会存在横竖屏切换的功能,通常是由物理重力感应触发的,但是 有时候也不尽然,通常在设置里面我们可以对手机的横竖屏切换 ...

  9. 你还在问android横竖屏切换的生命周期?

    本文原创,转载请注明来自xiaoQLu http://www.cnblogs.com/xiaoQLu/p/3324503.html 开源帮助android获得了飞速的发展,开源也导致了数不清的碎片问题 ...

最新文章

  1. 深度学习导论(5)手写数字识别问题步骤
  2. 使用log4j2打印mybatis的sql执行日志
  3. 2d 蓝图_“二渲三”打破传统思维!Netflix冲奥动画会推动2D动画变革吗?
  4. LAV Filter 源代码分析 1: 总体结构
  5. python类型转换方法_整理了最全的Python3数据类型转换方法,可以收藏当手册用...
  6. NYOJ--60谁获得了最高奖学金
  7. 日本著名数学游戏专家中村义作教授提出这样一个问题:将2520个桔子分给六个儿子
  8. SVN 小乌龟(TortoiseSVN)本地文件更新报错Another process is blocking the working copy database 解决方法
  9. 软件设计师中级下午题
  10. java计算机毕业设计小小银动漫网站源码+lw文档+系统+数据库
  11. Excel VBA | 一键批量生成对账单
  12. 量子计算机进行量子传输,量子技术新突破:按一下按钮就能实现量子传输!
  13. Source Insight 常用颜色代表种类
  14. java modelbus_modelbus tcp java
  15. 松软科技web课堂:SQLServer之UCASE() 函数
  16. LDO的基础特性——热关断
  17. 近十年计算机病毒侵害柱形图,全国2002年10月自学考试计算机应用基础真题
  18. CentOS 6.2下安装基于Suricata + Barnyard 2 + Base的入侵检测系统
  19. 为什么找不到AppData、Default、ProgramData文件
  20. 【鲲鹏HCIA考试】随堂习题卷五

热门文章

  1. 使用ConcurrentHashMap一定线程安全?
  2. jquery实现后台系统左侧菜单的点击展开/收缩二级菜单效果
  3. Add margining capability to a dc/dc converter
  4. 三大平衡树(Treap + Splay + SBT)总结+模板
  5. [转]C++基础:C++的结构struct
  6. vs2008 C++ 没有找到MSVCR90D.dll 问题
  7. 打造属于自己的图文符号库
  8. 洛谷 1351 联合权值
  9. django model 条件过滤 queryset.filter(**condtions) 用法
  10. Oracle 数据泵(IMPDP/EXPDP)导入导出总结