Android切换前后台,游戏界面随机出现黑屏

由于一些随机性的操作,会出现这种bug,界面变黑,渲染的图片消失,只剩下几个label还在,请问是什么原因,该怎么处理呢?谢谢

这个应该是资源被删除了,有没有错误LOG。

没有删资源哦,不是必现,小几率偶现

感觉像是把 引擎缓存的 GL 纹理给删除了。

是内存中的资源删除了

这个怎么处理呢,你们有遇到吗,收到反馈可能是切出游戏,再切进来这种操作触发的

我也感觉是这样,但是不知道怎么处理,好疼

你是哪个平台上面?

android手机上

哦, Android 切后台纹理是会丢失,不过切到前台来的时候引擎会自动重建的。可能原因是某些情况下面引擎没有正确重建纹理。

你描述是随机的,这个就比较麻烦了。

你看看能否多测试一下,尝试找一个规律。什么样的情况下出现的概率更大一点。另外,有没有某些 Android 机型或者某些 Android 系统版本更容易出现黑屏的问题。

如果只是”随机“两个字,这个问题就不好查了。

哦,那我先多测试下,谢谢。

我把你的帖子标题改了,下次发帖的时候也参考我的修改,把问题描述清楚一点吧。

会有这个问题 我们在原生中嵌入cocos 在cocos中调原生界面 原生界面在返回某些手机会有这个情况…

windows也有这种情况不好复现的…

小米出现概率较高:11:

坑在nativeOnResume中,改成如下代码中,解决问题

JNIEXPORT void JNICALL Java_org_cocos2dx_lib_Cocos2dxRenderer_nativeOnResume() {
// static bool firstTime = true;
if (Director::getInstance()->getOpenGLView()) {
// don’t invoke at first to keep the same logic as iOS
// can refer to https://github.com/cocos2d/cocos2d-x/issues/14206
// if (!firstTime)
Application::getInstance()->applicationWillEnterForeground();

        cocos2d::EventCustom* foregroundEvent = new (std::nothrow) cocos2d::EventCustom(EVENT_COME_TO_FOREGROUND);
        cocos2d::Director::getInstance()->getEventDispatcher()->dispatchEvent(foregroundEvent);
        foregroundEvent->release();

        // firstTime = false;
    }
}
2赞

经尝试,立竿见影的解决了“小米手机”出现黑屏的问题,赞!:rose:

这个文件是在哪里呀?请教大佬

有人知道这个文件在哪里改吗?

:astonished: