神操作 之 遠程調試 WebView 定位加載緩慢的坑。。。

甜的時候,甜到讓人不敢相信。苦的時候,苦到讓你日夜無眠。

前言

事情的緣由,因爲老韓某天賤嗖嗖的說,來,你搜下那個課程,現在免費,原價好幾百,請你看。

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~

點滴積累,加油~

參考資料

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