Creator1.5.1 cc.game.on(cc.game.EVENT_HIDE, ...)监听切入后台会调用两遍

##chrome 和 windows模拟器都有问题

##重现步骤如下

###1.5.1创建hellowrold项目 onload中加入如下代码

 onLoad: function () {
        this.label.string = this.text;
        cc.game.on(cc.game.EVENT_HIDE, function(event){
            cc.log("切换后台",event);
        });
        cc.game.on(cc.game.EVENT_SHOW, function(event){
            cc.log("切换前台",event);
        }); 
    },

###运行起来,切入后台
对应的方法会输出2次

3赞

原生下貌似一次 web下两次

我想知道正确的姿势是什么,最好能统一处理的。

###目前我想到的解决方案如下,希望官方可以修复

        let isBackGround = false;
        cc.game.on(cc.game.EVENT_HIDE, function(event){
            if(!isBackGround){
                isBackGround = true;
                cc.log("切换后台",event);
            }
        });
        cc.game.on(cc.game.EVENT_SHOW, function(event){
            if(isBackGround){
                cc.log("切换前台",event);    
                isBackGround = false;
            }
        }); 

v1.4.2就有这类问题了,而v1.3.3反而是好的,一直没敢换到1.5,没想到到了1.5.1了还没人提这个BUG……

1赞

1.6.1 beta2 同样的问题

win10 chrome浏览器环境下测试,EVENT_HIDE,EVENT_SHOW均调用两次.

我也测试了一下,的确如此,但如果真机上没问题的话,我就忍了。

为毛我的只有 1 次,测试环境:win10 chrome浏览器环境下测试

测试环境:win10 chrome浏览器环境下测试 1.52
切换后台 EventCustom {type: “game_on_hide”, bubbles: false, target: {…}, currentTarget: {…}, eventPhase: 2, …}
切换后台 EventCustom {type: “game_on_hide”, bubbles: false, target: {…}, currentTarget: {…}, eventPhase: 2, …}
切换前台 EventCustom {type: “game_on_show”, bubbles: false, target: {…}, currentTarget: {…}, eventPhase: 2, …}
切换前台 EventCustom {type: “game_on_show”, bubbles: false, target: {…}, currentTarget: {…}, eventPhase: 2, …}

我也碰到了这个问题,在chrome下show和hide会执行两次,但在safari下正常,只执行一次。
测试平台:
MacOS High Sierra

Chrome 版本 61.0.3163.100(正式版本) (64 位)

Safari 版本 11.0 (12604.1.38.1.7)

我的也是,1.6版本,调用两次,谷歌浏览器

win7 chrome浏览器环境下测试 两次 1.7正式版本,火狐浏览器一次

1赞

我也有遇到 顺便请教一下老哥 如何做的切入后台 在切回来时的网络状态信息处理?

现在2.0了 不还是这样:sunglasses:

各位帅哥,这个问题在 1.9 版本的引擎已经修复过了,旧的版本仍然有问题的话,建议可以更新到新版本的稳定引擎哦:grinning:
https://github.com/cocos-creator/engine/pull/2878

1赞

creator1.9.2,在web平台测试发现,依然有这个bug,hide和show回调触发两次

cc.game.on(.cc.game.EVENT_SHOW,function(){})这个在安卓很正常,为什么在ios不触发。。有什么需要注意的地方吗