解决cocos2d-x 安卓锁屏再解锁,OPenGL报错;后台转前台异常问题解决办法 (续)

前端之家收集整理的这篇文章主要介绍了解决cocos2d-x 安卓锁屏再解锁,OPenGL报错;后台转前台异常问题解决办法 (续)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

上一篇内容,经打包测试以后,发现虽然从点击图面图标切入游戏是正常的,但是锁屏以后问题仍然存在,要疯了,这是怎么回事?那好,那我想办法不让游戏自动锁屏。这里网上也有很多方法,推荐一篇文章大家看一下:http://blog.csdn.net/andyhuabing/article/details/8988161

这个方法完全可用,这样游戏在运行时不会自动锁屏,但这没有从根本上解决我的问题,那么继续上网搜,继续找方法,现在说一下最后的解决方法

在安卓项目找到当前项目的 java文件,在OnCreate方法添加一行语句:getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

这句话同样是使屏幕处于常亮状态,这样就不会锁屏了。

然后打开项目配置文件,也就是AndroidManifest.xml文件修改当前activity :android:configChanges="orientation|keyboardHidden">

好了,然后我们打包测试,会发现还是存在问题,奇怪了,这是为什么呢?不急,打断点就好了,我们把安卓这几个方法重写一下,打个断点看一下调用顺序:

@Override  
protected void onDestroy() {  
    super.onDestroy();
	Log.e("","start onDestroy~~~");
} 
/*@Override
public void onPause()
{
    super.onPause();
	Log.e("","start onPause~~~");
}
@Override
public void onResume()
{
    super.onResume();
	Log.e("","start onResume~~~");
}

@Override  
protected void onStart() {  
    super.onStart();  
    Log.e("","start onStart~~~");
}  
@Override  
protected void onStop() {  
    super.onStop();  
    Log.e("","start onStop~~~");  
}
@Override  
protected void onRestart() {  
    super.onRestart();  
    Log.e("","start onRestart~~~");  
}*/
这个时候才发现原来在锁屏的时候会调用onDestroy,可是又继续调用了onCreate ,解锁屏幕的时候也是这样,这就很奇怪了。后来再次查找资料时,发现原来是程序在锁屏时,程序是横屏的会被竖屏,如果Activity不加android:configChanges=”orientation”就会经历一次销毁再创建的过程。

在对应的Activity加入android:configChanges=”orientation|keyboardHidden|screenSize”即可。

好了,到这里这个非常坑人的问题算是解决了,对于像我这样不熟悉安卓的朋友希望能有所帮助。

注:本文章全是个人总结,有的借鉴他人文章的有说明,如果哪里注释不全想参考原文献的可以联系我,我会尽我所能帮助大家。

猜你在找的Cocos2d-x相关文章