14206补丁与权限界面冲突,在华为荣耀10上导致游戏假死

脚本语言:lua
版本:3.15,3.17都有,只要打过https://github.com/cocos2d/cocos2d-x/issues/14206这个补丁
机型:华为荣耀10
复现流程:
1:lua层等待Java层的初始化完成通知后调用界面函数
比如这样:
cc.exports.javaCallback = function(str)
startLogoAndEnterMainScenen()
end
java层在初始化完成后runOnGlThread(Cocos2dxLuaJavaBridge.evalString(“javaCallback”,“ok”));
2:游戏的Activity上的onCreate中调用权限请求接口,在权限请求成功以后回调lua
3:游戏黑屏,大概1/3左右的概率.
后面查下来发现是权限的Activity导致了主界面的OnPause,并且onNativePause调用
然后权限请求完成后的OnResume调用,但是nativeOnResume中的applicationWillEnterForeground没有调用
最后定位到Java_org_cocos2dx_lib_Cocos2dxRenderer_nativeOnResume这个函数的
if (!firstTime)
Application::getInstance()->applicationWillEnterForeground();
这句话在游戏第一次进入的时候不会调用,这导致游戏一直处于后台状态,界面也无法初始化。
在网上找了个3.x版本的cocos js的游戏,同样也能复现问题,不过不是假死是界面闪烁(只要一开始放个logo就会)

1赞

其他机型我们也在尝试,比如oppo,三星上是不会复现的。
临时解决方案是去掉firstTime,但是不知道会发生什么其他异常

这个问题不仅会引发假死,额外的也有可能导致游戏疯狂闪烁