首先介紹下什么叫過度繪制赊颠? 大家都知道我們顯示在前端的頁面都是一層蓋住一層畫上去的,那么過度繪制就是指瑰剃,我們xml里嵌套的層級過多齿诉,導致在界面繪制的時候,時間就會越慢晌姚,這就是過度繪制粤剧。
那么如何判斷你所寫的app 頁面是不是過度繪制呢?
1. 打開手機的開發(fā)者選項-開發(fā)者工具
2.里面除了有我們經(jīng)常用到的USB調(diào)試舀凛,還有一個選項是 <調(diào)試GPU過度繪制>,如下圖所示:
3.打開這個選項俊扳,你會發(fā)現(xiàn)一個神奇的事情,就是你的手機變成五顏六色的啦猛遍。
問題來了馋记,那么那些顏色又代表什么?
看下下面的圖就知道了(摘自網(wǎng)上)懊烤。
我們先來看下以下幾個頁面:
從上述兩幅圖中梯醒,可以發(fā)現(xiàn)qq 界面還是做的挺不錯的,屏幕大部分是2x還有1x,屬于相對較好的腌紧,而第二張app的頁面就不太好了茸习,扎一看,基本都是3x和4x壁肋。
那么這些繪制的顏色對我們的應(yīng)用又有什么影響呢号胚?
補充一點:上述1x,2x代表屏幕上1個像素被繪制了多少遍,繪制的層次越多浸遗,顏色越深猫胁。
這個在好一點的手機上沒有多大的區(qū)別,但是在差的手機上跛锌,會影響頁面的加載速度弃秆。所以說啊,這個問題對于一個千萬級用戶的app來說,當然是不能放過滴菠赚。
如何優(yōu)化呢脑豹?
我弄過好幾個頁面的優(yōu)化,一般大多都是background導致衡查,每個層級都有background,那么系統(tǒng)在繪制的時候瘩欺,先繪制底層的顏色,再繪制下一個層的.....依次類推峡捡,嵌套多了击碗,子然就慢了筑悴,但是我們知道其實底部的顏色用戶是看不到的们拙,系統(tǒng)因為我們的設(shè)置,而幫我們繪制一遍顯然是沒有必要的阁吝。
- 檢查各個層級之間的background,避免重復繪制砚婆。
- 減少布局的嵌套
- 選擇合適的控件(能用一個寫了的不要寫2個,你懂的)
在這里給大家推薦一個安卓自帶的xml分析工具突勇,叫 Hierarchy View 装盯,我之前寫了一篇文章關(guān)于它的使用 android 優(yōu)化之layout
另外關(guān)于嵌套還可以參考:Android布局優(yōu)化之include、ViewStub甲馋、merge
好了埂奈,最后看下我優(yōu)化后的布局:
嘿嘿,是不是好多了定躏,還不趕緊動起你的小手搞起來账磺。(親測,速度上加快了2s左右).