遵循一條規則:佈局層次盡量少(RelativeLayout來代替LinearLayout、減小必要的節點、合理的使用<merge>標籤) html
使用Lint分析佈局java
HierarchyViewerandroid
使用ViewStub延遲加載視圖(優化那些不是必需要當即在UI上顯示的控件)算法
參考: 數據庫
http://rayleeya.iteye.com/blog/1961005 設計模式
緩存(圖片緩存、數據庫緩存、對象數據緩存等)緩存
數據類型選取、對象設計(繼承、組合)、設計模式等網絡
算法(必要時候可用空間換時間)佈局
邏輯優化
提早或延遲操做
網絡優化
參考:
http://developer.android.com/training/articles/perf-tips.html (java)
http://rayleeya.iteye.com/blog/1961005 (java)
http://www.trinea.cn/android/java-android-performance/ (java)
http://blog.csdn.net/innost/article/details/9008691 (Traceview)
索引(當某字段數據更新頻率較低,查詢頻率較高,常常有範圍查詢(>, <, =, >=, <=)或order by、group by發生時建議使用索引; 常常同時存取多列,且每列都含有重複值可考慮創建複合索引)
批量插入、更新使用原子操做
查詢時返回更少的結果集及更少的字段。
少用cursor.getColumnIndex(能夠在建表的時候用static變量記住某列的index,直接調用相應index而不是每次查詢。)