接入百度sdk,百度sdk的弹窗广告弹出后锁屏再回到游戏黑屏

接入百度SDK,百度SDK的弹窗广告弹出后锁屏再回到游戏黑屏

采用cocos2dx 3.10 的引擎。
游戏最近完工开始接入SDK的工作,以前也接入过百度的SDK,所以很迅速的完成了,但是就发现了这个问题,百度的广告页面弹出来后,锁屏再回到游戏中发现了黑屏。
检查了一下发现是cocos的问题。
在 Cocos2dxActivity.java 中 重载了 onWindowFocusChanged,然后增加了标记 hasFocus。
hasFocus 标记在 onResume 中有使用到(看到增加了个函数)。
if(hasFocus) {
Cocos2dxHelper.onResume();
mGLSurfaceView.onResume();
}
看着这个代码的意思应该是如果cocos游戏的activity获取到了焦点那就恢复cocos游戏运行,从pause状态改变到resume。
于是黑屏问题就明白了,锁屏后 SDK和游戏都执行了pause,但是重开解锁屏幕之后 SDK执行了resume恢复了显示,但是cocos游戏并没有resume所以就黑屏了,这个问题应该怎么改比较好呢?


路过,理论上我觉得是你接的不对啊。 我也结果类似的 比如移动退出的时候也有一个弹窗 但是还是可以恢复游戏。

看完我的描述再说我接的对不对吧,接入完全没问题,不止百度,其他家的弹窗广告弹出了锁屏或者home之后都是这样的,问题我也找到了,是引擎的问题,以前的版本没有hasfocus这玩意的,不知道加来干啥的,所以自己不改,来论坛问问怎么改

1赞

好吧 我也是用的3.10 JSB版本。 也遇到过你说的返回黑屏(华为),但是最后发现是自己写错了。 也许你的不一样吧, 请无视之。

楼主 你看看你的 applicationDidEnterBackground 方法里面是不是有 Director::getInstance()->stopAnimation(); 当你弹出百度的SDK的时候 会执行这句 这时候引擎会停止绘制 所以造成了你在SDK界面退到桌面 在进来背景是黑的 你把这句代码去掉试试 或者使用暂停

加hasFocus是因为,屏幕亮起来还没解锁就会发送resume,这时是不希望引擎运行的。而且如果你从百度广告切换到引擎时,应该还会再走这段逻辑的。你可以打断点看看。

遇到了和你同样的问题,接入友盟sdk,切出切入后,也是黑屏,popupwindow在游戏界面没有恢复之前先弹出来了,请问你是怎么解决的呢