Android之效能優化

2021-10-01 05:55:44 字數 1078 閱讀 7407

目的:減少布局檔案的層級,減少android繪製時的工作量。

方法:①刪除布局中無用的控制項和層級

②選用效能較低的viewgroup:linearlayout,framelayout1.ondraw中不要建立新的區域性物件

2.ondraw中不要做耗時任務

產生記憶體洩漏原因:

1.靜態變數導致

2.單例模式(有註冊但無解註冊)

3.屬性動畫(ondestroy中停止動畫)

解決方法:

1.避免寫出記憶體洩露的**

2.通過一些工具找出潛在的記憶體洩漏

核心思想:避免在主線程中做耗時操作,如果有耗時操作,可以採用非同步的的方式去執行耗時操作,但是需要注意子執行緒和主線程搶占同步鎖的情況。響應速度過慢主要體現在activity的啟動速度上面

anr:當乙個執行緒發生anr之後,系統會在data/anr目錄下建立乙個檔案trace.txt,通過分析這個檔案就能定位出anr的原因。

listview優化

1.採用viewholder並避免在getview中執行耗時操作

2.根據列表的滑動狀態來控制任務的執行頻率(當列表快速滑動時顯然是不太適合開啟大量的非同步任務的)

3.嘗試開啟硬體加速使listview的滑動變得更流暢

bitmap優化

通過bitmapfactory.options來根據需要對進行取樣。

採用執行緒池,避免在程式中存在大量的thread。執行緒池可以重用內部的執行緒,從而避免執行緒的建立和銷毀所帶來的效能開銷,同時執行緒池還能有效地控制線程池的最大併發數,避免大量的執行緒因互相搶占系統資源而導致阻塞現象發生。

1.避免建立過多物件

2.不要過多的使用列舉

3.常量使用static,final修飾

4.採用一些android特有的資料結構

5.盡量使用軟引用和弱引用

6.採用記憶體快取和磁碟快取

7.盡量採用靜態內部類,這樣可以避免潛在的由於內部類而引起的記憶體洩漏。

Android效能優化之執行緒優化

不能通過非ui執行緒對view進行操作。因為android的ui不是安全的,如果view能被不同的執行緒所訪問或修改,那麼就可能在程式的執行期間,產生不可預期的行為或者併發錯誤。使用執行緒時,避免在循壞中使用同步,因為獲取和釋放鎖的操作代價很大。會引起cpu資源的損耗。處理多執行緒以及執行緒間通訊時...

Android效能優化之布局優化

在乙個典型的顯示系統中,一般包括cpu gpu和display三個部分 display可以理解為螢幕或者顯示器,cpu是用來計算影象資料的,然後把計算好的資料交給gpu,gpu會對圖形資料進行渲染,再把渲染好的資料存到buffer 快取區 裡面,最後display也就是螢幕負責把buffer裡面的資...

android效能優化之啟動優化

解決方案 null null true drawable bg splash必要且耗時 mutidex 必要不耗時 首頁繪製 非必要耗時 資料上報,外掛程式初始化 非必要不耗時 直接去掉,需要時再載入。其他第三方元件的初始化 檢視日誌 將手機連線到android studio上,開啟logcat,不...