android專案效能優化之啟動時間
阿新 • • 發佈:2018-12-31
一般來說,判定一個android專案效能優劣,我們有以下幾個指標:
- 啟動時間
- apk大小
- UI渲染
- 穩定性
- 記憶體佔用
- 電量消耗
接下來,讓我們就這幾個指標展開來詳述各自究竟應該怎樣去優化。
啟動時間
一般來說,應用啟動時間分為三種
- 首次啟動 –應用首次啟動所花費的時間
- 非首次啟動 –應用非首次啟動所花費的時間
- 應用介面切換–應用介面內切換所花費的時間
一般來說,首次啟動時間會比非首次啟動要久,首次啟動會做一些系統初始化工作,如快取目錄的生產,資料庫的建立,SharedPreference的初始化
測量辦法
- 第一種方式:通過am命令
adb shell am start -W -n com .xx.xx(包名)/.xx.xxActivity(lanch activity)
am是shell中整合的一個命令,ActivityManager的簡寫。一共需要提供兩個引數-W,-n,其中-W是指啟動完成之後,返回啟動耗時,是最關鍵的一個引數。-n後面跟的是需要啟動的App的包名和launchActivity。點選確定之後,會發現App被成功啟動,且adb中會輸入以下結果
Starting: Intent { cmp=com.xx.xx/.xx.xxActivity }
Status: ok
Activity: com.xx.xx/.xx.xxActivity
ThisTime: 176
TotalTime: 176
Complete
其中ThisTime即是本次App啟動所花費的時間。
此法獲取的啟動時間非常精準,可精確到毫秒。
非launchActivity直接執行該命令會報java.lang.SecurityException: Permission Denial
錯誤,需要先獲取root許可權.
- 第二種方式:在DDMS或Logcat日誌中過濾TAG為ActivityManaer
Displayed com.xx.xx/.xx.xxActivity: +275ms
優化手段
- 啟動過程中做的事情越少越好
- 不在UI執行緒上做耗時操作
- 在合適的時機開始後臺任務
例項說明
- 很多第三方整合平臺都會要求在launchActivity中初始化,但大部分其實我們可以把這些初始化工作延遲到第一次使用這些平臺功能的時候
- 很多專案的launchActivity都是一個splash頁面,用來展示專案資訊,一般都會要求延時幾秒,可以在延時進入主介面的過程中做一些必要的專案初始化工作
總結
相對來說,優化啟動時間是比較容易的,最關鍵一點就是找到影響啟動時間的因素,然後想辦法把其挪出去就好了。
下一篇文章我們一起來探討一下怎樣去減少apk的大小