問題
有一個(gè)主頁面,布局里是包含的一個(gè)Webview,頁面跳轉(zhuǎn)進(jìn)入第二個(gè)頁面也會(huì)加載一個(gè)新的WebView,但新的webView加載頁面不成功,加載進(jìn)度走到10%就不動(dòng)了也沒有報(bào)錯(cuò)信息。
? ? ? ? 首先出現(xiàn)的是主頁面的webView一直加載不出來,但當(dāng)時(shí)沒有多想一直以為是網(wǎng)絡(luò)的問題,殺死進(jìn)程或者退出之后重新進(jìn)入就恢復(fù)正常了,所以一直沒有作為主要問題去解決,項(xiàng)目后期是想著切換成騰訊的X5webView,優(yōu)化一下webView加載,發(fā)現(xiàn)項(xiàng)目首頁打開正常了,正常后這個(gè)問題就放入了優(yōu)化成功功能里,但其實(shí)不知道問題并沒有真正的解決。后期發(fā)現(xiàn)了一個(gè)大問題,我們使用的聲網(wǎng)白板標(biāo)記加載不出來了,這個(gè)可是我們的主要功能呀,于是加緊排查:
排查
1、出現(xiàn)這個(gè)問題第一反應(yīng)是我們使用的第三方出現(xiàn)了問題。由于我們最開始使用的是測(cè)試版,所以第一反應(yīng)是我們使用的測(cè)試版本欠費(fèi)了,不能使用,登錄后臺(tái)后發(fā)現(xiàn)沒有欠費(fèi);
2、尋找聲網(wǎng)技術(shù)同學(xué)幫忙排查是不是,我們創(chuàng)建的白板房間出現(xiàn)問題,或者設(shè)置的參數(shù)有問題(但這個(gè)其實(shí)不太可能因?yàn)橹暗膸讉€(gè)項(xiàng)目使用都是正常的,但之前都是原生開發(fā)且只有加載白板的這個(gè)webView),經(jīng)過聲網(wǎng)技術(shù)同學(xué)查詢一切都是正常的,未發(fā)現(xiàn)有問題。
到此處開始懷疑是不是設(shè)備的問題:
3、根據(jù)設(shè)備去排查:分別使用的設(shè)備是 遨游A11對(duì)講機(jī)、征服S29對(duì)講機(jī)、華為P30。發(fā)現(xiàn)使用AndroidStudio直接運(yùn)行時(shí),華為P30正常,但是遨游A11對(duì)講機(jī)、征服S29對(duì)講機(jī)加載白板時(shí)均出現(xiàn)webView加載10%就跳出了,也沒有任何的報(bào)錯(cuò)信息。但進(jìn)行打包之后安裝在設(shè)備上后一切是正常的。這里又開始懷疑是Android Studio增量運(yùn)行的問題。
4、懷疑是Android Studio增量運(yùn)行問題后,我又清除緩存運(yùn)行Android Studio,重新安裝Android Studio,找了新電腦重新運(yùn)行都不行。到這里可以確認(rèn)是設(shè)備造成的。
5、然后在網(wǎng)上開始各種扒資料,首先找到了同樣問題的帖子,
資料:Android webview只加載10%且出現(xiàn)白屏問題排查解決_Johngo學(xué)長
Android WebView 進(jìn)度卡住10%不動(dòng),頁面空白,頁面無反應(yīng),不報(bào)錯(cuò)。_一個(gè)小小的程序員11的博客-CSDN博客_webview 10%
但發(fā)現(xiàn)我里面并沒有上述所說的問題,于是開始繼續(xù)尋找,這時(shí)突然想到我的項(xiàng)目中同時(shí)加載了兩個(gè)WebView,主頁面和我的標(biāo)注頁面,于是開始懷疑是否是因?yàn)槎郃ctivity加載webView引起的沖突導(dǎo)致的。于是又在網(wǎng)上開始各種翻資料,終于找到了
關(guān)于連續(xù)打開多個(gè)包含WebView的Activity出現(xiàn)空白加載不出來的bug的解決方案_ShownXeu瀟栩的博客-CSDN博客_多個(gè)webview同時(shí)存在加載不出頁面
6、開始排查,把首頁的webView禁掉,只加載一個(gè)白板的webView,發(fā)現(xiàn)還是加載不出來,但這個(gè)時(shí)候一直覺得是雙webView引起的,所以懷疑是緩存的問題。所以直接卸載軟件發(fā)現(xiàn)重新安裝后,嘿~正常了。歡呼~歡呼~畢竟到這里已經(jīng)排查了兩天了。然而重新跑一次程序又出現(xiàn)了。于是嘗試直接進(jìn)入了應(yīng)用信息里,清除掉緩存,在回到應(yīng)用發(fā)現(xiàn)加載成功了。這么一來就一直認(rèn)為是緩存的問題,一定是。所以就此落坑開始了兩天的清除緩存排查;使用代碼在每次關(guān)閉頁面打開頁面均清除一次webView所有記錄,清除手機(jī)所有瀏覽器記錄。均發(fā)現(xiàn)不行。到這里我已經(jīng)泄氣了開始再找能不能使用項(xiàng)目跳轉(zhuǎn)到應(yīng)用詳情頁面用戶手動(dòng)清除一次緩存之后在開始使用(很顯然這里我已經(jīng)開始抓瞎了),但是讓我崩潰的是,直接跳轉(zhuǎn)進(jìn)入清除緩存后還是不行。
7、然后又發(fā)現(xiàn)每次殺死進(jìn)程后進(jìn)入設(shè)備肯定是正常的,且有一段時(shí)間會(huì)都是正常的。到這里又開始找殺死進(jìn)程后點(diǎn)擊項(xiàng)目ICON圖標(biāo)是怎樣的流程。跟設(shè)備直接在androidStudio上run的區(qū)別。
深入淺出Android中的App啟動(dòng)流程分析_左手木亽的博客-CSDN博客
然而還是沒有解決問題。
8、到這里開始想是不是能把聲網(wǎng)的webView也改成X5WebView,于是開始在開始更換使用的第三方插件:
https://github.com/netless-io/DSBridge-Android
https://github.com/netless-io/whiteboard-android
然而這個(gè)換上之后直接跑demo發(fā)現(xiàn)還是不行,完蛋了~~這里開始無限崩潰了~~~~~~開始懷疑到底是哪里的問題,為什么首頁加載都是成功的但是白板這個(gè)始終都不能成功呢。
呀~~~~~~~~~~~~~~~呀~~~~~~~~~~~呀~~~~~~~~~~~呀~~~~~~~~~
好吧。收拾心情重新出發(fā)。那就從原點(diǎn)開始解決。使用X5WebView的demo開始運(yùn)行,發(fā)現(xiàn)這里也不能使用。好勒,那就從這里開始解決問題。
9、仔細(xì)看日志發(fā)現(xiàn)有一個(gè)報(bào)錯(cuò)信息。歡呼~~~~~~終于看到的為啥出錯(cuò)的信息了:
X5核心接入: TBS:initX5Core bmttwebview.so is 32-bit instead of 64-bit 問題解決方案
這里基本開始就懷疑是不同的瀏覽器內(nèi)核或者cpu出現(xiàn)的問題,然后看到了這片文章
解決方案:
現(xiàn)在市面上常見的CPU架構(gòu)類型如下:
1、armeabi-v7a:?第7代及以上的 32位ARM 處理器
2、arm64-v8a:?第8代、64位ARM處理器
3、armeabi:?第5代、第6代的32位ARM處理器,早期的手機(jī)在使用,現(xiàn)在基本很少了。
4、x86:?Intel 32位處理器,在平板、模擬器用得比較多。
5、x86_64:?Intel 64位處理器,在平板、模擬器用得比較多。
這里就開始有了一些思路了,首先 ndk {abiFilters "armeabi"?},加入后,哈哈,X5WebView 運(yùn)行正常。哈哈哈哈,首戰(zhàn)告捷。然后開始同樣的解決方式,哈哈,白板的webView整個(gè)運(yùn)行正常。哈哈哈,仿佛已經(jīng)勝利。
10、將白板的webView修改為X5WebView,然后還是不行。怎么會(huì)呢?各個(gè)不能運(yùn)行的問題都解決了呀,咋還是出現(xiàn)了問題呢。對(duì)了,還有同時(shí)運(yùn)行兩個(gè)webView的問題,于是添加了
mWhiteView.onResume();
mWhiteView.resumeTimers();
終于一切成功了!?。。。。。。?!
總結(jié)本次修改:
1、mWhiteView.onResume();? ? mWhiteView.resumeTimers();
2、ndk {abiFilters "armeabi"?}
3、修改為X5WebView文章來源:http://www.zghlxwxcb.cn/news/detail-420211.html
遺留問題:目前遺留問題不清楚為什么系統(tǒng)的WebView為啥不能加載出來,等后期有時(shí)間接著排查文章來源地址http://www.zghlxwxcb.cn/news/detail-420211.html
到了這里,關(guān)于Android webview只加載10%且出現(xiàn)白屏問題排查解決的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!