Android性能優化
前言
Android性能優化主要包括布局優化、繪製優化、內存泄露優化、響應速度優化、ListView優化、Bitmap優化、線程優化以及一些優化建議.
實際上每個面都可以擴展很多,書中講的不太多(篇幅少),需要在實際中多去運用.
後面還有MAT的基本使用,我沒記,可以去搜,資料不少~
布局優化
減少布局文件的層級(測量/布局/繪製的時間減少):可以使用RelativeLayout來減少嵌套,從而達到減少層級的目的,另外在相同層級的情況下使用LinearLayout(相比於RelativeLayout更高效)
使用include標籤復用,merge標籤降低層級,ViewStub來實現懶載入,另外補充一個Space可以用來佔位
繪製優化(onDraw)
主要是避免執行大量的操作.
不要創建新的局部對象,因為onDraw可能會被頻繁調用,會在一瞬間產生大量的臨時對象,會導致佔用過多內存,系統更加頻繁的gc,降低執行效率
不要做耗時的任務
內存泄露優化
其實內存泄露有很多種情況,但是書中列舉的比較少
靜態變數導致的內存泄露(比如靜態的context,靜態的view)
單例模式持有Activity
屬性動畫(repeatCount為無限模式)
ListView和Bitmap優化
ListView使用viewholder模式,Bitmap在12章有講,這裡不重複.
線程優化
主要是採用線程池(11章有講)
避免存在大量的Thread
重用Thread,避免線程創建和銷毀所帶來的開銷
線程池還能控制最大並發數,避免大量線程因互相搶佔系統資源從而導致阻塞
其他的一些性能優化建議
避免創建過多的對象
不要過多使用枚舉(枚舉佔用的內存空間要比整型的大)
常量使用 static final來修飾
使用一些Android特有的數據結構,比如SparseArray和Pair等,它們都具有更好的性能(注:減少了自動裝箱和拆箱的消耗)
適當使用軟引用和弱引用
盡量採用靜態內部類(不會持有外部類的實例)
提高可維護性
命名規範
代碼排版
給非常關鍵的代碼寫注釋
代碼要有層次性,可擴展
http://weixin.qq.com/r/VjuLk3DE1C2rrTTw925E (二維碼自動識別)
閱讀原文 作者:程序亦非猿
推薦閱讀:
※OnePlus 一加3T:距離不「將就」,還要更「講究」一點 | 肉身評測
※AndroidDeveloper Weekly No.3
※Android SO文件的兼容和適配
※珍愛生命,遠離蘋果