Android webview只加載10%且出現白屏問題排查解決

原文:Android webview只加載10%且出現白屏問題排查解決 - Stars-One的雜貨小窩

問題

有一個主頁面,佈局裏是包含的一個自定義Webview,並且注入了些原生的方法進去,供原生JS調用

原生JS調用某個方法後,會先彈出個對話框,之後進入到另外一個含Webview的頁面,並加載JS傳遞過來的一個url,但是卻出現了白屏的問題

排查

首先,根據網上的資料,一一排查了一遍,但都沒有結果

之後,我嘗試註釋掉了設置WebChromeClient對象,發現網頁均可以正常加載

但此方法不是我想要的,因爲我的自定義WebView是實現了文件上傳的功能,如果不設置WebChromeClient的話,文件上傳的功能不可使用

之後網上的大多是解決方案都是去改WebViewClient的,所以,肯定不是我這種情況的解決方法

在找資料的過程中,知道WebChromeClient類中提供了一個方法,可以獲取當前網頁的加載進度,於是重寫了此方法,將進度打印了出來,但是進度就是加載到10%,之後沒有任何反應了,頁面也是白屏的

抱着試一試,搜索了webview 加載卡住,結果中發現了一個符合我情況的標題Android WebView 進度卡住10%不動,頁面空白,頁面無反應,不報錯

進去一看,瞬間就有了思路,原來是我用來測試的html裏js代碼有觸發js彈窗,然後我又是再彈窗之後直接跳轉到頁面,於是新頁面中的webview加載資源就被暫停調了

於是我把html裏的js彈窗取消,於是網頁也是能夠正常加載出來了

這個問題也是排查了兩天,真不容易 😂

如果硬要解釋的話,webview設置了WebChromeClient,裏面含有js彈窗的相關處理的方法回調,所以把新頁面的webview的加載給暫停了,但是如果不設置WebChromeClient,相當於沒有js彈窗攔截,所以就不會講webview的加載給暫停

參考

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章