問題:
Android 食用JsbridgeWebView與h5進行交互,h5註冊JsBridge,在調用時bridge時有時候爲空
分析:
JsBridgeWebView通過BridgeWebViewClient 進行代理 ,注入 WebViewJavascriptBridge.js文件
查看源碼發現注入jsBridge的js文件是在 WebViewClient的 onPageFinished回調中
設置log日誌 可以發現,當頁面複雜度較高時,h5一直處於加載中,並沒有回調 onPageFinished 方法
百度一下發現,這種情況還是很多的
但是我這裏將複雜的h5鏈接替換爲http://www.baidu.com ,很順利的回調了 onPageFinished
猜測 h5頁面複雜度較高,加載了很多js文件,頁面一直處於加載中,所以頁面不算 加載完成
解決方案:
因爲我這裏是使用的 setWebChromeClient 去顯示和隱藏加載進度,發現 無論頁面多卡段 onProgressChanged中 newsProgress是有回調100進度數值數據的,在進度到100時會關閉展示的進度條,順便主動觸發一下 webViewClient.onPageFinished,但需要注意的是當前API是 8.0以上才被public