1. 程式人生 > 程式設計 >簡單瞭解Android效能優化方向及相關工具

簡單瞭解Android效能優化方向及相關工具

開發一款效能優良的應用是每一個Android開發者都必須經歷的挑戰。在移動端資源有限的前提下,提高應用的效能顯得尤為重要。常見的提高APP效能的優化方向有三個:佈局和渲染優化、記憶體優化、功耗優化。

一:佈局優化

所謂佈局優化,就是儘量減少佈局的巢狀層級,減少無用的佈局。主要的優化方法有:

(1)優先使用RelativeLayout來減少佈局巢狀層數,否則儘量使用LinearLayout。這是因為RelativeLayout能夠在不巢狀的情況下完成複雜的佈局,而當佈局比較簡單時優先使用LinearLayout提高效能。

(2)使用include標籤來重用佈局,使用merge標籤來合併佈局。

(3)使用ViewStub來實現檢視的動態載入,僅當使用的時候才去載入它。

(4)精簡佈局,刪除無用的佈局等。

佈局優化常用的工具有:Hierarchy Viewer等。

二:渲染優化

渲染優化主要就是提高渲染的速度,避免過度繪製,從而減少畫面卡頓。主要優化方法有:

(1)通過佈局優化減少佈局層級,提高佈局的繪製速度。

(2)當同一幀的畫素點被繪製多次時,就會產生過度繪製問題(OverDraw),導致資源被浪費,因此需要避免過度繪製。

(3)系統每16ms會發送一次同步訊號,進行UI渲染,如果每次都能渲染成功,就能使FPS達到60,從而使使用者感覺不到畫面卡頓。這就要求onDraw()方法中不能做耗時的邏輯。

繪製優化常用的工具有:開發者選項裡的GPU呈現模式分析、除錯GPU過度繪製等。

三:記憶體優化

記憶體優化最主要的就是避免記憶體洩漏。常見的記憶體洩漏有:

(1)使用Static將屬性或控制元件定義為靜態的

1)在Activity類裡有一個Activity的靜態成員變數引用了該Activity例項,由於靜態成員生命週期長,從而導致Activity例項需要被GC時由於該例項被引用導致無法被回收。解決方法為在Activity的onDestroy()方法裡將該成員變數賦為Null。

2)如果View定義為靜態的,由於View持有Activity的context,同樣會造成記憶體洩漏。解決方法為回收Activity例項時同時呼叫View的onDestroy()方法釋放該View。

(2)非靜態內部類、匿名內部類造成記憶體洩漏

由於非靜態內部類和匿名內部類預設持有外部類的強引用,當內部類的生命週期比外部類長時就會造成記憶體洩漏。常見的例子比如Handler內部類造成記憶體洩漏等。解決方法為將內部類定義為靜態的,因為靜態內部類沒有外部類的引用。如果內部類要訪問外部類的成員,可以通過弱引用的方式。

常用的檢測記憶體洩漏工具有:Leakcanary、MAT等。

四:功耗優化

功耗優化主要是減少應用的耗電量,減少不必要的網路請求等。

五:其他優化

比如減小安裝包體積,在UI執行緒避免耗時操作等等。

六:其他優化工具

IDE自帶的靜態程式碼檢測工具、各種AndroidMonitor;jdk自帶的traceView等。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。