cocos2d 3.11.1 关于Android包第一次打开按Home键挂起再进入的问题 too much recursion

问题描述,打好安卓包点开包,用手机系统自带程序安装器安装后,会有一个“完成”和“打开”按钮,点击打开程序后,再按Home键退出程序,回到手机桌面再点击应用图标进入,程序直接卡死,点游戏界面上的任何按钮都无反应!!!eclipse上报出一连串“too much recursion”,此时的我一脸懵逼。
经过反复测试,只有第一次这样做会出问题,且如果不点击那个“打开”按钮,而是安装完程序后,回主界面使用点击应用图标的方法去打开就不会出问题!!!

推测这一定涉及到了Android的问题,就去论坛上看了一下,找到了关于Android程序启动的类似问题。
解决方案和问题的原因如下:
在cocos2dxActivity.java的onCreate方法中添加代码

注意添加到super.onCreate(savedInstanceState);的后面

if((getIntent().getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) != 0){
    finish();
    return;
}

造成问题的原因:很简单,利用程序安装器打开程序,启动的Intent是没有带Category,而我们自己打开程序是带了Category,所以只需要在配置Intent.ACTION_MAIN的Activity判断下有无Category。然后放到通知栏的时候要更具有无Category 来生成启动的Intent。

然而,我照此方法改了,并没有什么luan用!!! 只是不像之前那样卡死了,是直接闪退!!!闪退!!!

好了,平复一下激动的情绪,仔细分析。第一次启动后,我们是按了Home键再进入,然而上述的解决方法大概意思就是,防止重复创建Activity,除此之外好像没有做关于cocos2d的什么事,但是我们的程序是按Home键挂起的,也就是此Activity到了后台,虽然不需重新创建,但是再进入应该要做resume的事情吧,关于cocos2dxActivity的事。
以上只是我的推测,于是我大胆的做了下尝试:
这里写图片描述
在return之前添加了onResume方法。

然后重新打包,问题居然就这么解决了!!!
亲测数十遍,也没有出现其他的什么问题。
虽然解决了,但也不能证明我的想法是完全正确的,如果有大神看到本文有什么不对的地方可以指出,我也可以学习一下。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值