Android布局優化之層級優化


程序的每個組件和 Layout 都需要經過初始化、布局和繪制,如果布局嵌套層次過深,就會導致加載操作更為耗時,更嚴重的話還可能導致內存溢出。本節我們學習使用兩個工具來檢查和優化 Layout。

 

 

HierarchyViewer

 

 

該工具位於Android SDK tools中,使用HierarchyViewer可以分析正在運行app的布局,從而打破影響布局性能的瓶頸。

 

HierachyViewer通過選擇運行在模擬器或真機上的進程來工作,並通過布局樹來展示。上面每個標識代表布局的Measure、Layout和Draw的性能,幫助開發者來定位潛在的問題。

 

如圖1所示,圖中是ListView中的一條布局,這個布局左邊是一個ImageView,右邊是一個LinearLayout中嵌套兩個TextView布局。

 

 

圖1

 

HierarchyView工具可以用於Android模擬器,打開后,即可看到可用設備列表和運行的組件。在Windows選項卡里,點擊Hierarchy View后,即可看到選擇組件的布局層次結構。例如圖2 展示了圖1 的ListItem布局的層次結構。

 

圖2

 

 

減少層次結構

 

由於上圖使用了嵌套的LinearLayout結構布局,導致性能變慢。我們可以使用扁平化的思想來優化它們——布局要寬而廣,而不是窄而深! 我們可以使用Relativelayout來作為頂級節點,這樣轉向RelativeLayout來布局之后,我們會看到下圖這樣的布局層級結構。

 

圖3

 

修改為RelativeLayout布局之后,層級減少,布局性能大大增強。另外,LinearLayout中的layout_weight也會減慢measure的速度,所以不是必要時不要使用layout_weight屬性。這只是一個小小的例子,在一些非常復雜的布局中,如果層級太多或LinearLayout嵌套過多,系統會將很大性能消耗在UI的measure計算上面,因此,層級結構優化至關重要。

 

Lint

Android Lint是在 ADT 16 提供的新工具,它是一個代碼掃描工具,Lint已經替代了Layoutopt tool成為重要的提示工具,它具有更多更高級的功能 ,能夠幫助我們識別代碼結構存在的問題。Lint 包含的一些檢測規則有:

 

  • 使用 compound drawable 替代一個包含 ImageView 和 TextView 的 LinearLayout。

  • 合並根 FrameLayout

  • 沒用的子節點或父節點

  • 硬編碼問題

 

另外,開發者可以通過 File>Settings>Project Settings 來管理配置文件。

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM