天天看點

android性能優化方面總結

近幾天将android中需要性能優化的方面總結了一下,大緻如下

性能優化,何為性能優化,

一般在性能測試中,用響應時間,TPS(吞吐量)來表示。

  • 通常情況就是,響應時間過長,TPS太低,
  • 對于背景開發,還有高并發下記憶體洩露。
  • 對于移動開發,有電量優化,記憶體優化兩類

優化方式,(秘密:其實就是優化響應時間,提高TPS而已)

三大類:

  • 降低執行時間(利用多線程并發或者分布式提高TPS,緩存(對象緩存,IO,網絡)。
  • 資料結構和算法優化(ArrayList,SpareList)。
  • 更優的接口調用(JNI),邏輯優化,需求優化)
  • 同步改異步(利用多線程提高TPS),提前或者延遲TPS,

    網絡優化:

  • 連接配接伺服器優化:不用域名,省去DNS解析,動态IP清單,伺服器合理部署(),
  • 擷取資料優化政策:連接配接複用(節省連接配接時間,如keep-alive),請求合并(多個請求合成一個),減少請求資料大小(對于POST,做壓縮,對請求頭壓縮,Http1.1不支援,2.0可以,不支援可以通過伺服器對一個請求頭緩存,同樣請求用MD5代替)。
  • CDN緩存靜态資源:緩存常見的圖檔,js,css等靜态資源,減少傳回資料的大小(壓縮,精簡資料格式(json),不同裝置傳回不同分辨率的圖檔,增量更新,大檔案下載下傳(斷點續傳)),資料緩存(緩存資料在一定的時間内可以再次請求緩存資料)
  • 其他優化方式:預取,分優先級,延遲部分請求,多連結, 代碼優化

    緩存(記憶體,檔案,資料庫,網絡),常用的資料,放到記憶體中緩存,

    常用的緩存:線程池,圖檔緩存,sd緩存,資料預取緩存,消息緩存,listview緩存,網絡緩存,io緩存,Layout緩存,

    資料儲存優化:資料類型(StringBuilder代替String,使用softReference利益回收,final的讀取最快),資料結構的選擇(Arraylist,HashMap,SparseArray)

    算法優化,JNI優化,邏輯優化,需求優化,,

    多線程,異步提高TPS,

布局優化:

Include Merge,ViewStub,去除不必要的嵌套,使用RelativeLayout性能更好,減少不必要的infalte,全局。用SurfaceView或者TextureView代替View(繪制操作移動到了另一個單獨的線程,SurfaceView不能被像正常試圖一樣,移動縮放,TextureView可以,android4.0引入的)

布局調優工具,hierarchy viewer,

資料庫優化(省略,以後再寫)

繼續閱讀