Android應用優化之佈局優化

Android系統每隔16ms發出VSYNC信號,觸發對UI的渲染,想要達到界面流暢,必須實現60fps,也就意味着大多數的操做必須在16ms內完成。canvas

除了界面過於複雜致使的渲染不能及時完成以外,還存在過分繪製的問題。過分繪製就是某個像素在同一幀的時間內被繪製屢次,在多層次的UI界面中,若是不可見的UI也在進行繪製,那麼這些重合區域的像素就會被繪製屢次,從而浪費大量的CPU和GPU資源。  過分繪製也發生在背景重疊的狀況下,好比Layout中有本身的背景,同時子View中有本身的背景。佈局

如何檢測?性能

1.使用HierarchyViewer來查找Activity中的佈局是否過於複雜;優化

2.在開發者選項中打開Show GPU Overdraw選項進行觀察是否存在過分繪製;url

3.在開着選項中選擇Profile GPU Rendering,選中On screen as bar;.net

4.使用TraceView來觀察CPU的執行狀況。code

如何優化?對象

1.減小布局的層級,合理的使用include、merge、ViewStub;ip

2.自定義組件的onDraw()中避免大量建立臨時對象,好比String,以避免頻繁觸發GC;資源

3.自定義組件的onDraw()中,考慮使用canvas.clipRect()繪製須要被繪製的區域;

4.對於listView這樣的組件容器,考慮使用convertView、ViewHolder;

5.考慮使用性能更高的組件,好比推薦使用RecycleView來代替ListView,使用staticlayout來實現自動換行。

相關文章
相關標籤/搜索