對(duì)于一個(gè)App的UI而言,在流暢性上的改進(jìn)目標(biāo)其實(shí)就是降低屏幕繪制的延遲,創(chuàng)建流暢和穩(wěn)定的幀率以避免卡頓。
在理想情況下,全部的測(cè)量、布局和繪制的時(shí)間最好在16ms以內(nèi),這樣才能保證屏幕運(yùn)行的順暢性。而如何對(duì)屏幕渲染和UI性能進(jìn)行評(píng)估和分析呢,在Android SDK中集成了一些工具用來策略APP的渲染性能問題。
一、視圖的層級(jí)分析:
對(duì)于每一個(gè)視圖而言,都需要經(jīng)過三個(gè)步驟:測(cè)量、布局和渲染。而App如何繪制視圖,它需要從頂部節(jié)點(diǎn)開始測(cè)量,沿著布局樹逐個(gè)渲染,視圖樹的層級(jí)越多,嵌套測(cè)量的次數(shù)越多,測(cè)量的時(shí)間也會(huì)越長。而一旦測(cè)量完畢就會(huì)進(jìn)行布局,每個(gè)視圖都會(huì)對(duì)自己的子視圖進(jìn)行布局,子視圖布局完畢后回到父視圖,然后再到根視圖,布局完成后,每個(gè)視圖都會(huì)被繪制在屏幕上。
顯然,App的視圖越多,層級(jí)越深就需要越長的時(shí)間測(cè)量、布局和繪制,為了減少這些時(shí)間,需要盡可能保持視圖層級(jí)的扁平化并刪除所有沒有必要渲染的視圖。
雖然在XML布局文件中可以查看布局的節(jié)點(diǎn)視圖,單很難找到多余的視圖,為了找到這些多余的視圖,可以利用Android Studio中的Hierarchy Viewer工具來分析Android App中的視圖。
Hierarchy Viewer(層次結(jié)構(gòu)查看器)能夠便捷地以可視化方式查看各種視圖嵌套關(guān)系,可用于研究XML視圖結(jié)構(gòu)。(需要一個(gè)運(yùn)行Android App的設(shè)備)
延伸閱讀
學(xué)習(xí)是年輕人改變自己的最好方式