creator2.4.7helloworld项目打包android 切换后台到前台黑屏 提供demo和视频

  • Creator 版本:2.4.2, 2.4.7

  • 目标平台:android 、鸿蒙

  • 重现方式:1.在继承自cocos2dActivity的appActivity类中的oncreator方法中UIThread中显示一个自带的Dialog,2.运行游戏此时activity中会出现一个对话框,3切换到后台再到前台观察游戏界面结果黑屏

  • 编辑器操作系统:mac

  • 重现概率:100%

在2.4.7中新建helloworld项目构建android 项目使用AS打开添加代码:、
app = this; this.runOnUiThread(new Runnable() { @Override public void run() { app.showDialog("1","1"); } });
按照复现步骤操作

演示视频.zip (1.3 MB)

1赞

demo直接新建hellworld工程打包android添加代码就能复现,demo文件压缩后太大了,放在网盘的话估计下载一天都下载不完

关联问题:android 拉起支付返回到游戏 GL线程崩了

引擎大大们,大佬们抽空看眼呗(一只烟的时间)

1赞

不要用 app代替this, 后台切换回来 activity可能是被重建的。 你试试在onCreate里 指定静态的Activity app =this; 这样避免app为空

是这么操作的少截一段代码 public static AppActivity app;

不行的话 再延时一下 因为出现dialog的话 cocos2dxActivity会切换为paused状态
如果cocos初始化还未完成,可能会出现出乎意料的错误。上面的代码是不行的

activity 切换到后台走onPause但是从后台回来会走onResume,从后台到前台也不会走初始化呀

我说的cocos的初始化是指的引擎自己的逻辑(c++各个模块,渲染等好多东西),本来是oncreate这里往下可以一直走下去,结果提前断了,可能还有未初始化的对象等,在onResume里被调用了 比如声音什么的 你试试延时800毫秒之类的 应该就不会崩溃了的。


启动后确实延迟显示了,在显示了对话框下切换到后台然后回到前台GL还是黑的

我的意思是在出现对话框下再切换到后台,然后到前台对话框正常,但是游戏是黑的,需要关闭对话框游戏才能显示

如果在dialog出现的时候,游戏内容是显示;
去后台回到前台,只有dialog,关闭dialog,游戏内容显示,那你需要断点onPaused和看下日志了。理论上不应该

是的,AS还没有报错,游戏就黑了

不显示dialog游戏到后台再到前台没问题的

已复现,那个看着是 dialog 的背景,已经建立 issue;

好的,能修改的话还劳烦给个合并链接啥的

到目前为止我都不知道该用哪个版本了,没有一个版本是修复版的,强烈建议出修复版,而不是一直放到跟下一个版本的新功能集合在一起

你好,我在github上没有找到这条issue的链接,方便提供一下吗,以便我后续跟进

2.x使用的是android自带的GLSurfaceView,其生命周期大部分由安卓自己控制。

这其中就有一个Bug,就是SurfaceView的生命周期在正常运行时会发生错误。

如果我们在Cocos2dxGLSurfaceView的onResume方法中打断点并且使用debug模式的话,退回后台又回到前台时logcat会显示下列log并且被对话框遮挡的界面会正常显示。但如果我们直接运行,在此处的log则不会出现。
image
而调用onResume方法则是关注于hasFocus是否为true。
image
image
当从后台回到前台时,此时的焦点并不在SurfaceView上,所以hasfocus为false。所以surfaceView不会调到onResume的生命周期。而如果我们手动打断点的话,onWindowFocusChanged又神奇的被触发了,并且调用堆栈显示是系统派发。我们暂且认为它是由于断点导致了android studio强制对焦。

其实这也不难理解,当我们创建了dialog之后,windowFocus自然对焦到了对话框,而引擎中本身的逻辑就是只渲染被focus的对象。所以当退到后台再退回来时,GLSurfaceView的hasFocus并没有被设置成true。所以不会进行渲染。这是正常的。

如果一定想要实现对话框和surfaceView同时渲染,可以hack有关的java代码,使hasFocus属性永远能够生效。但我们的引擎仍然应该保持原有的逻辑

PS:issue建在内部了。

2022.03.03 Update

Possible update: https://github.com/cocos-creator/engine-native/pull/4270

1赞

该主题在最后一个回复创建后14天后自动关闭。不再允许新的回复。