这个不是毕现的,但是触发的几率比较高,程序切回桌面,等一会儿就会再点击游戏图标进入游戏就会闪退了,
Receiver not registered: org.cocos2dx.lib.Cocos2dxHelper$BatteryReceiver@6de89b9
貌似获取电池信息有问题? 但是我程序内并没有使用到电池的地方
测试过程有验证常见的几个 Android 机型的。
你测试的机型是什么,桌面是什么?creator 带的测试工程,会出现这样的问题么
第一次游戏的启动是 Android Studio 拉起的,还是从外部网页跳转的,还是第一次就是从桌面
我是打的原生包,日志是手机连接AS打印的。
操作过程是第一次进入游戏后,切后台,断网(模拟4g情况下打电话),锁屏,开启屏幕,再点击图标进入游戏,这个时候就crash了。
目前测试了几款机型都是这样,荣耀一部,红米3s,华为p10,基本都会出现这个情况。
切后台如果不断网,几率会小很多,如果断网了,并且程序在后台,再进游戏的话crash的几率会大点。
这边修改了Cocos2dxActivity里面的registerBatteryLevelReceiver 和unregisterBatteryLevelReceiver 调用的位置,从onCreate 和onDestory里,调整到onPause 和 onResume()里面了,等待测试结果。
ccc自带的测试工程没有打包测试。
初步怀疑是后台进程被杀了,然后恢复程序的时候调用报错了。
先不分析原因,说避免的话,我觉得最好调整 OnDestroy 的逻辑,如果能判断事件有没有被注册,如果没有就不再 “解注册”
问题的原因,很可能和这个有关,下面链接有一个修复 PR,试着改一下。
http://forum.cocos.com/t/cocos-android-activity-andriod-activuty/57422
留意 Cocos2dxActivity 中的 isTaskRoot 是否有被触发过。
// Workaround in https://stackoverflow.com/questions/16283079/re-launch-of-activity-on-home-button-but-only-the-first-time/16447508
if (!isTaskRoot()) {
// Android launched another instance of the root activity into an existing task
// so just quietly finish and go away, dropping the user back into the activity
// at the top of the stack (ie: the last state of this task)
finish();
Log.w(TAG, "[Workaround] Ignore the activity started from icon!");
return;
}
先谢谢引擎组的同学,这个我测试下看看
楼主,在吗。我也遇到这个问题,一直解决不了,你有没有解决。我用2.0.1建立一个helloworld工程打包到魅族5s机器上,按下HOME键。APP就退出了。
我这个跟你的不一样啊,我的是偶发的,切换后台是正常的,切后台时间长了,可能会引起无法进入游戏的情况
1.10,安卓热更新 切换后台也会闪退,合并了这个PR就解决了。点个赞。
请问问题解决了么?我这在google play上有大概5%的机器崩溃是因为这个问题
java.lang.RuntimeException:
at android.app.ActivityThread.performDestroyActivity (ActivityThread.java:4670)
at android.app.ActivityThread.handleDestroyActivity (ActivityThread.java:4697)
at android.app.ActivityThread.-wrap7 (ActivityThread.java)
at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1720)
at android.os.Handler.dispatchMessage (Handler.java:102)
at android.os.Looper.loop (Looper.java:154)
at android.app.ActivityThread.main (ActivityThread.java:6816)
at java.lang.reflect.Method.invoke (Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:1563)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1451)
Caused by: java.lang.IllegalArgumentException:
at android.app.LoadedApk.forgetReceiverDispatcher (LoadedApk.java:1054)
at android.app.ContextImpl.unregisterReceiver (ContextImpl.java:1376)
at android.content.ContextWrapper.unregisterReceiver (ContextWrapper.java:668)
at org.cocos2dx.lib.Cocos2dxHelper.unregisterBatteryLevelReceiver (Cocos2dxHelper.java:125)
at org.cocos2dx.lib.Cocos2dxActivity.onDestroy (Cocos2dxActivity.java:377)
at org.cocos2dx.javascript.AppActivity.onDestroy (AppActivity.java:335)
at android.app.Activity.performDestroy (Activity.java:7255)
at android.app.Instrumentation.callActivityOnDestroy (Instrumentation.java:1161)
at android.app.ActivityThread.performDestroyActivity (ActivityThread.java:4657)

