最近做的忍者小鸡暗杀行动遇到按锁屏键再解锁时 进入游戏画面会特别卡的问题,后来打日志发现 锁屏再解屏时生命Activity的生命周期发生异常变化引起的,下面就具体来看下。
事先在GameActivity(游戏主界面)的 onCreate() 方法和 onDestroy()方法打上Log 。
进入GameActivity时
——————————->onCreate();
按锁屏后 :
—————————–>onDestroy();
—————————–>onCreate();
再解锁:
——————————>onDestroy();
——————————->onCreate();
根据日志可以看出 锁屏时 系统销毁当前Activity又在后台创建了一个Activity ,再解锁时 系统又销毁了后台的Activity 再创建一个新的Activity。
起初不是很明白,后来在网上查了相关资料发现这中情况是由于横竖屏切换引起的,横竖屏切换时 会销毁当前Activity 再创建 一个新的Activity(横屏切竖屏或者竖屏切横屏)。具体过程大家可以写个demo 打上日志看看 ,这里就不细说了,至于为什么要这样设计还有待研究,下面就来看看这个问题的解决方法:
解决这个问题 只要在程序的配置文件 (APPManifest.xml ,的相关Activity里加上
android:configChanges=”keyboard|keyboardHidden|orientation”
加上这句后 按锁屏键 就不会销毁当前Activity 也不会在后台创建Activity了 ,其生命周期类似于按了Home键的过程。