webview安卓事件cc.WebView.EventType.LOADED触发错误

项目用到cc.webview在网页端和windows模拟器监听的事件正常,但是到安卓端回直接触发loaded事件,导致我没办法正确显示页面加载进度条;在显示事件前有安卓报错信息:

08-29 20:27:58.688 18625-18633/org.cocos2d.niuniu W/art: Suspending all threads took: 8.052ms
08-29 20:28:23.546 18625-18625/org.cocos2d.niuniu W/cr_BindingManager: Cannot call determinedVisibility() - never saw a connection for the pid: 18625
08-29 20:28:23.556 18625-19414/org.cocos2d.niuniu E/libEGL: validate_display:99 error 3008 (EGL_BAD_DISPLAY)
08-29 20:28:23.574 18625-18688/org.cocos2d.niuniu E/niuniu: is loaded!

安卓端直接触发 loaded 事件时,webview 的状态是如何的,是加载完毕还是正在加载?

webview在安卓上网页正常加载就是正常加载完成一次网页会触发两次loaded事件,第一次loaded事件应该是开始加载的loading事件,加载完成会再触发一次loaded事件,而在网页上时正常的只有加载完成会触发一次loaded事件,因为要做模拟加载进度条发现的这个问题,你看下是不是bug,
我这边已经做了容错处理如果是安卓第一次loaded不触发我加载完成的事件,IOS还没测,不知道是不是也有这个问题,但是自带的windows模拟器是正常的

我这里测试了一下只有 1 次,能否看一下你是如何注册事件的吗?

我的项目iOS/安卓都可以正常触发加载回调函数,参考的官方例子,在编辑器指定回调函数。

onWebLoad: function (sender, event) {
    var loadStatus = "";
    if (event === cc.WebView.EventType.LOADED) {
        loadStatus = " is loaded!";
        if((cc.sys.os == cc.sys.OS_ANDROID) && this.b_first_loaded){
            this.b_first_loaded = false;
            return;
        };
        this.endLoaded();
        this.node_loading_progress.width = 720;
    } else if (event === cc.WebView.EventType.LOADING) {
        loadStatus = " is loading!";
    } else if (event === cc.WebView.EventType.ERROR) {
        loadStatus = ' load error!';
        this.endLoaded();
        this.node_loading_progress.width = 720;
    }
    cc.log(loadStatus);
    //this.labelStatus.string = this.url.string + loadStatus;
},

加载事件的代码,可是我这里真的没有正常触发loading,触发了两次loaded…,难道时版本问题?

是没有触发 loading(这个会看看是什么原因),但是 loaded 并不会触发 2 次(这个已经测试过了)

1.5.1版本真的触发了两次loaded你们应该是拿当前版本测的,虽然还是没用触发loading,但是loaded好了,下周我升级版本再试下

嗯,感谢, loading 未触发这个会跟进的

我这边1.6.1版本发现依然有这个问题 安卓真机上loaded 走了两次但是loading 未触发,h5端无问题

java这边加行这个代码判断下, 第一次加载的是个空页面。

但是在webview里面打开的网页在点击打开另外网页时, 使用的跳转方式为HTML:target=blank, 还是会调用两次finishLoading。