1. 程式人生 > >自定義控制元件的效能優化

自定義控制元件的效能優化

自定義控制元件的效能優化主要包括三方面:效能優化、繪製優化、佈局優化。

效能優化:
  1. 使用工具進行排查,包括:Memory Monitor、Allocation Tracker、MAT、LeakCanary.
  2. 避免在onDraw()和onLayout()中建立物件,因為這兩個方法在繪製過程中會被頻繁的呼叫。
  3. 使用較小的資料結構,如SparseArray。
  4. 對Bitmap進行壓縮和複用。
  5. 避免記憶體洩漏。
繪製優化
  1. 保證每幀耗時操作不能超過16ms。由於Android中每秒傳輸幀數(FPS)不能低於60fps,所以,需要保證每幀耗時操作不能超過16ms。方法:在onDraw()繪製前開始計時,在結束後計算繪製時間,從而計算onDraw()繪製的時間。
  2. 通過主執行緒Looper處理訊息或事件的時間差來監控應用整體卡頓的情況,例如第三方工具:BlockCanary。
  3. 避免繪製過度。例如,控制元件之間的重疊,空間本身與背景之間的重疊等。在手機的開發者選項中開啟除錯GPU過度繪製,選擇顯示過度繪製區域,檢視手機螢幕上是否有顏色過深的區域,則為過度繪製的區域。
  4. 減少無意義的繪製,例如進度條更新顯示,如果讀取檔案的資料量不超過總檔案的1%,就無需更新繪製。
佈局優化
  1. 減少佈局的重疊和巢狀。如果自定義控制元件繼承RelativeLayout,該佈局的父佈局也是RelativeLayout,則可以將子佈局的根節點設定< merge>< /merge> 或者< viewStub> < /viewStub>
    viewStub介紹
  2. 儘量使用相對佈局LinearLayout和約束佈局ContraintLayout。