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/