甜的時候,甜到讓人不敢相信。苦的時候,苦到讓你日夜無眠。
前言
事情的緣由,因爲老韓某天賤嗖嗖的說,來,你搜下那個課程,現在免費,原價好幾百,請你看。
ummm,原諒我的年少無知太單純,信了糟老頭子的前半段話。嗯,的確是前半段話。
後半段話是,加載這麼慢,你是不是也看的很不爽?很不快樂?
ummm,老韓好心機。疑惑之下點擊看了下,ummm,神奇的咧,慢的一批。
這時候,老韓放大招了。忒慢了,你瞅瞅,反正我打死不改富文本。
ummm,懵逼.gif、無奈.gif、蛋涼涼.gif
腦補分析來一波
這塊的流程大概如下:
- 通過接口方式獲取詳情;
- 拿到接口返回富文本進行本地拼接 Html 代碼段;
- 加載拼接好的 Html 代碼段。
三個環節,接口暫未做優化,這個愛莫能及,本地拼接,倒也不會出現特別耗時的情況,那麼導致加載緩慢的緣故,就應該是這個返回的富文本導致。
遠程調試 WebView
通過 Chrome 開發者工具在 Android 應用中調試 WebView。這裏需要注意:
- 此工具只支持在 Android 4.4 (KitKat) 或更高版本中,才能使用 DevTools 在原生 Android 應用中調試 WebView 內容
Step 1:設置在 Debug 模式下啓用 WebView 調試
// Debug 模式下開啓遠程調試
if (BuildConfig.DEBUG) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
WebView.setWebContentsDebuggingEnabled(true)
}
}
Step 2:Chrome 地址欄輸入 chrome://inspect
Step 3:手機打開要調試的頁面,查看 Chrome 調試器
Step 4:點擊 inspect 開始調試頁面
分析並解決
從輸入的日誌來看,明顯當前這個網頁圖片佔了很大一部分比例,而且每個圖片都還不小。
可愛的老韓啊,圖片都木有壓縮處理哦。
阿韓說了,打死不改富文本。那麼針對 Android 端,這塊又該如何處理呢?
可不可以優先加載文字,隨後加載圖片呢?
這樣一來,至少保證了網頁的快速加載。
首先在 WebView 設置中設置禁止加載圖片以及直接阻塞圖片的加載:
// 取消自動加載圖片
webSetting.loadsImagesAutomatically = false
// 阻塞加載圖片
webSetting.blockNetworkImage = true
捎帶腳的開啓硬件加速吧,現在機子應該毫無壓力。
// 開啓硬件加速
webSetting.setRenderPriority(WebSettings.RenderPriority.HIGH)
最後,在我們實際加載 WebView 的 Finish 回調中再次開啓圖片加載即可。
override fun onPageFinished(view: WebView, url: String?) {
// 解除阻塞
setting.blockNetworkImage = false
// 是否需要加載圖片
if (!setting.loadsImagesAutomatically) {
setting.loadsImagesAutomatically = true
}
}
運行 App,加載速度明顯有所提升。
但是有一點不太好的是,因爲上來就阻塞了圖片的加載,導致在網速差的時候,圖片的位置是一個小叉,這個有點噁心了。
改天等雞大大空閒請教吧~
Sleep~
點滴積累,加油~