转载 - cocos 游戏跳转到其他 activity,返回之后显示黑屏

场景描述:
复现大概是这样:
在这里插入图片描述

曾多次尝试运行游戏寻找原因,未果。猝。 某次不经意的发现正常情况和异常情况下所执行的 activity 生命周期不一致,于是集中注意观察生命周期执行情况,如下所示:

        2021-08-19 14:12:32.205 24566-24566/【包名】 D/HsLog: cocos - oncreate
        2021-08-19 14:12:32.207 24566-24566/【包名】 D/HsLog: cocos - onstart
        2021-08-19 14:12:32.207 24566-24566/【包名】 D/Cocos2dxActivity: onResume()
        2021-08-19 14:12:32.259 24566-24566/【包名】 D/HsLog: cocos - onresume
        2021-08-19 14:12:32.290 24566-24877/【包名】 D/main: cocos_android_app_init
        2021-08-19 14:12:32.308 24566-24566/【包名】 D/Cocos2dxActivity: onWindowFocusChanged() hasFocus=true

        2、弹出广告
        2021-08-19 14:13:39.994 24566-24566/【包名】 D/Cocos2dxActivity: onPause()
        2021-08-19 14:13:40.045 24566-24566/【包名】 D/HsLog: cocos - onpause
        2021-08-19 14:13:40.257 24566-24566/【包名】 D/Cocos2dxActivity: onWindowFocusChanged() hasFocus=false

        3、跳出游戏界面
        2021-08-19 14:13:48.316 24566-24566/【包名】 D/HsLog: cocos - onstop
        2021-08-19 14:13:48.317 24566-24566/【包名】 D/HsLog: cocos - onsaveinstance

        4、回到游戏(显示异常,游戏出现黑情况)
        2021-08-19 14:14:13.082 24566-24566/【包名】 D/HsLog: cocos - onrestart
        2021-08-19 14:14:13.083 24566-24566/【包名】 D/HsLog: cocos - onstart

        5、游戏正常
        2021-08-19 14:14:36.778 24566-24566/【包名】 D/Cocos2dxActivity: onResume()
        2021-08-19 14:14:36.822 24566-24566/【包名】 D/HsLog: cocos - onresume
        2021-08-19 14:14:36.825 24566-24566/【包名】 D/Cocos2dxActivity: onWindowFocusChanged() hasFocus=true

        6、激励视频显示正常
        2021-08-19 14:16:00.781 24566-24566/【包名】 D/HsLog: cocos - onrestart
        2021-08-19 14:16:00.782 24566-24566/【包名】 D/HsLog: cocos - onstart
        2021-08-19 14:16:00.782 24566-24566/【包名】 D/Cocos2dxActivity: onResume()
        2021-08-19 14:16:00.826 24566-24566/【包名】 D/HsLog: cocos - onresume
        2021-08-19 14:16:00.848 24566-24566/【包名】 D/Cocos2dxActivity: onWindowFocusChanged() hasFocus=true

        7、全屏视频显示正常
        2021-08-19 14:17:28.423 24566-24566/【包名】 D/HsLog: cocos - onrestart
        2021-08-19 14:17:28.424 24566-24566/【包名】 D/HsLog: cocos - onstart
        2021-08-19 14:17:28.424 24566-24566/【包名】 D/Cocos2dxActivity: onResume()
        2021-08-19 14:17:28.468 24566-24566/【包名】 D/HsLog: cocos - onresume
        2021-08-19 14:17:28.491 24566-24566/【包名】 D/Cocos2dxActivity: onWindowFocusChanged() hasFocus=true

日志分析:
1、5、6、7 均执行了 onResume 回调,异常情况下的第 4 步没有指向 onResume,可疑。

下一步:
去 cocos 论坛查找 activity 生命周期对 cocos 游戏绘制(渲染)存在什么关联???
之后就发现了下面的这篇原文(第一次接触 cocos ,知识盲区)

解决

  • 找到文件 Cocos2dxActivity
  • 重写生命周期,提前 cocos 绘制
    @Override
    protected void onStart() {
        super.onStart();

        Cocos2dxHelper.onResume();
        mGLSurfaceView.onResume();
    }

    @Override
    protected void onStop() {
        super.onStop();

        Cocos2dxHelper.onPause();
        mGLSurfaceView.onPause();
    }

cocos 游戏黑屏 - 原文

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值