抖音短的ui分析與總結,抖音短不流暢

移動端UI卡頓問題解決方案 。
十年大廠架構師 。
今天我們聊聊移動端性能優化、ui卡頓內存問題等棘手的問題 , 也是面試中經常會問到的,這些問題怎么來解決?第一個我們今天先討論UI卡頓問題,解決方案分為常規方案和黑科技 。
·常規方案就比如說我們的UI是不是布局圈套太深,沒有使用性能優化相關的一些方式,view Stub等等的merge標簽、include標簽就是純UI方面的 。當然了我們常規的解決方法,我們通過一些Systraces traceView等等的一些安卓自帶的一些檢測工具來做檢查,這些都是屬于常規的一些方式 。

抖音短的ui分析與總結,抖音短不流暢

文章插圖
·當然還有一些常規的里邊當然還包括布局的檢查,是不是這一塊業務也比較復雜,等等的業務相關的梳理 。這是第一個方面 。
·那么黑科技我們又從哪些來考慮?首先比如說我們的進到某個頁面 , 主頁面它的內容特別多特別復雜 。這個時候我們是不是考慮到了異步加載,因為整個頁面XML比較大,我們是不是安卓默認的setContentView解析,這個XML都是在主線程,我們是不是可以把它提前來做解析,提前放在異步線程里邊 。
抖音短的ui分析與總結,抖音短不流暢

文章插圖
還沒到進到這個頁面,我們提前準備好,我們到頁面來了,再進行一個view的加載,那么這就是Asynclnflater一些方式,放在子線程里邊,提前做好準備來加載 。同時你像掌閱科技的一些方案 , X2C方案 。
它的一個目的就是我們寫的布局還是那個布局,還是寫的那個XML 。但是我們通過編譯的時候寫gradle插件來解析了XML , 把它轉化成一個類似于flutter這種申明式布局 。這樣我們在業務團隊寫開發的過程中對它們的代碼侵入性是非常小的,我們在主線程來解析XML,這是一種方式 。
抖音短的ui分析與總結,抖音短不流暢

文章插圖
·還有你比如在抖音的一些方案,它就是說安卓刷新機制,它要來刷新uiui變化了之后它會同步屏障 , 它會發同步屏障,這個時候ui也會發消息,發消息它會在messageQueue輪詢\messageQueue里邊的消息屏障 。
抖音短的ui分析與總結,抖音短不流暢

文章插圖
【抖音短的ui分析與總結,抖音短不流暢】但是這個消息,如果消息前邊有大量的業務 , 在同步屏障前面這個時候就是導致了整個的消息刷新相關的message,得不到及時的執行 。所以說有一種方案拿到當前app的messageQueue,然后拿到里邊的同步屏障,把它屏障插到整個messageQueue的對列的隊首最前邊 。這樣我的UI就得到了及時刷新 。至于你后邊業務相關的message你再繼續執行,這也是一些非常黑科技的一些方式 。