Android效能優化一些方法

berber78發表於2015-06-02

1.採用硬體加速,在androidmanifest.xml中application新增 android:hardwareAccelerated=”true”。不過這個需要在android 3.0才可以使用。
2.View 中設定快取屬性.setDrawingCache為true。
3.優化你的佈局。通過Android sdk中tools目錄下的layoutopt 命令檢視你的佈局是否需要優化。
4.動態載入View.採用ViewStub 避免一些不經常的檢視長期握住引用。
5.將Acitivity 中的Window 的背景圖設定為空。getWindow().setBackgroundDrawable(null);android的預設背景是不是為空。
6.採用 優化佈局層數。 採用來共享佈局。
7.檢視Heap 的大小。
8.利用TraceView檢視跟蹤函式呼叫。有的放矢的優化。
9.cursor 的使用。不過要注意管理好cursor,不要每次開啟關閉cursor。因為開啟關閉Cursor非常耗時。Cursor.require用於重新整理cursor。
10.採用環形Buffer(可以採用連結串列資料結構實現)。可以設定一個連結串列長度的上限,根據手勢的變化來不斷地更新環形Buffer的內容。
11.採用SurfaceView在子執行緒重新整理UI, 避免手勢的處理和繪製在同一UI執行緒(普通View都這樣做)。
12.採用JNI,將耗時間的處理放到c/c++層來處理。
13.有些能用檔案操作的,儘量採用檔案操作,檔案操作的速度比資料庫的操作要快10倍左右。
14.懶載入和快取機制。訪問網路的耗時操作啟動一個新執行緒來做,而不要再UI執行緒來做。
15.訊息快取通過handler.obtainMessage複用之前的message。

16.檔案IO快取,使用具有快取策略的輸入流,BufferedInputStream替代InputStream,BufferedReader替代 Reader,BufferedReader替代BufferedInputStream.對檔案、網路IO皆適用。例如:
HttpURLConnection con=(HttpURLConnection)url.openConnection();BufferedReader input =newBufferedReader(new InputStreamReader(con.getInputStream()));
Strings;
while((s = input.readLine()) != null) {

}

17.Layout優化:使用抽象佈局標籤(include,viewstub,merge)、去除不必要的巢狀和View節點、減少不必要的infalte及其他Layout方面可調優點,順帶提及佈局調優相關工具 (hierarchy viewer和lint)。
18.TextView屬性優化:TextView的android:ellipsize=”marquee”跑馬燈效果極耗效能。
19.使用hashMap代替arrayList,時間複雜度降低一個數量級。

20.資料庫優化,http://www.trinea.cn/android/database-performance/

相關文章