Android性能優化

前言

Android性能優化主要包括布局優化、繪製優化、內存泄露優化、響應速度優化、ListView優化、Bitmap優化、線程優化以及一些優化建議.

實際上每個面都可以擴展很多,書中講的不太多(篇幅少),需要在實際中多去運用.

後面還有MAT的基本使用,我沒記,可以去搜,資料不少~

布局優化

  1. 減少布局文件的層級(測量/布局/繪製的時間減少):可以使用RelativeLayout來減少嵌套,從而達到減少層級的目的,另外在相同層級的情況下使用LinearLayout(相比於RelativeLayout更高效)

  2. 使用include標籤復用,merge標籤降低層級,ViewStub來實現懶載入,另外補充一個Space可以用來佔位

繪製優化(onDraw)

主要是避免執行大量的操作.

  1. 不要創建新的局部對象,因為onDraw可能會被頻繁調用,會在一瞬間產生大量的臨時對象,會導致佔用過多內存,系統更加頻繁的gc,降低執行效率

  2. 不要做耗時的任務

內存泄露優化

其實內存泄露有很多種情況,但是書中列舉的比較少

  1. 靜態變數導致的內存泄露(比如靜態的context,靜態的view)

  2. 單例模式持有Activity

  3. 屬性動畫(repeatCount為無限模式)

ListView和Bitmap優化

ListView使用viewholder模式,Bitmap在12章有講,這裡不重複.

線程優化

主要是採用線程池(11章有講)

  1. 避免存在大量的Thread

  2. 重用Thread,避免線程創建和銷毀所帶來的開銷

  3. 線程池還能控制最大並發數,避免大量線程因互相搶佔系統資源從而導致阻塞

其他的一些性能優化建議

  1. 避免創建過多的對象

  2. 不要過多使用枚舉(枚舉佔用的內存空間要比整型的大)

  3. 常量使用 static final來修飾

  4. 使用一些Android特有的數據結構,比如SparseArray和Pair等,它們都具有更好的性能(注:減少了自動裝箱和拆箱的消耗)

  5. 適當使用軟引用和弱引用

  6. 盡量採用靜態內部類(不會持有外部類的實例)

提高可維護性

  1. 命名規範

  2. 代碼排版

  3. 給非常關鍵的代碼寫注釋

  4. 代碼要有層次性,可擴展

weixin.qq.com/r/VjuLk3D (二維碼自動識別)

閱讀原文 作者:程序亦非猿

推薦閱讀:

OnePlus 一加3T:距離不「將就」,還要更「講究」一點 | 肉身評測
AndroidDeveloper Weekly No.3
Android SO文件的兼容和適配
珍愛生命,遠離蘋果

TAG:Android开发 | Android |