崩溃代码所在位置
奔溃定位到 cocos 构建自动生成的 Android 代码 Cocos2dxActivity
的 onCreate()
中
原因是执行到了以下代码,直接 return
导致的奔溃
// 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;
}
解决
方案一
注释代码,崩溃问题消失【似乎不是最终的解决方案】
/*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;
}*/
方案二【似乎不是最终的解决方案】
替换 cocos 自动生成的部分代码,替换为以下代码
if (!isTaskRoot()) {
final Intent intent = getIntent();
final String intentAction = intent.getAction();
if (intent.hasCategory(Intent.CATEGORY_LAUNCHER) && intentAction != null && intentAction.equals(Intent.ACTION_MAIN)) {
Log.d(TAG, "onCreate: 关闭");
finish();
}
}
~如有更好,更清晰的解决思路,欢迎评论~