應用程序的性能問題體如今不少方面, 好比第一次啓動速度慢,或者進入某一界面速度慢;動畫執行過程不流暢,或者動畫執行卡頓時間長;ListView列表滑動過程當中卡頓,不流暢;應用程序自定義的某特定界面執行速度慢;響應某一用戶事件時長時間無響應(ANR);操做數據庫時,執行大量數據的增刪改查操做,執行速度慢;文件讀寫頻繁,緩存文件過大致使卡頓;應用長時間運行後,隨機出現卡頓現象。算法
一方面,編程思想。數據庫
- 1. 瞭解編程語言的編譯原理,使用高效編碼方式從語法上提升程序性能;
- 2. 採用合理的數據結構和算法提升程序性能,這每每是決定程序性能的關鍵;
- 3. 重視界面佈局優化;
- 4. 採用多線程、緩存數據、延遲加載、提早加載等手段,解決嚴重的性能瓶頸;
- 5. 合理配置虛擬機堆內存使用上限和使用率,減小垃圾回收頻率;
- 6. 合理使用native代碼;
- 7. 合理配置數據庫緩存類型和優化SQL語句加快讀取速度,使用事務加快寫入速度;
- 8. 使用工具分析性能問題,找出性能瓶頸;
另外一方面,編程技巧。編程
- 1. 避免建立沒必要要的對象
- 2. 合理使用static成員
- 3. 避免內部的Getters/Setters
- 4. 使用加強for循環
- 5. 使用package代替private以便私有內部類高效訪問外部類成員
- 6. 合理使用浮點類型
- 7. 採用
<merge>
優化佈局層數。 採用<include
>
來共享佈局。
- 8. 延時加載View. 採用ViewStub 避免一些不常常的視圖長期被引用,佔用內存.
- 9. 移除Activity默認背景,提高activity加載速度。
- 10. cursor 的使用。
- 11. 廣播BroadCast動態註冊時,記得要在調用者生命週期結束時unregisterReceiver,防止內存泄漏。
- 12. 針對ListView的性能優化
- 13. 注意使用線程的同步機制(synchronized),防止多個線程同時訪問一個對象時發生異常。
- 14. 合理使用StringBuffer,StringBuilder,String
- 15. 儘可能使用局部變量
- 16. I/O流操做記得及時關閉流對象。
- 17. 使用IntentService代替Service
- 18. 使用Application Context代替Activity中的Context
- 19. 集合中的對象要及時清理
- 20. Bitmap的使用
- 21. 巧妙的運用軟引用(SoftRefrence)
- 22. 儘可能不要使用整張的大圖做爲資源文件,儘可能使用9path圖片
- 23. 瞭解並使用庫函數