Android獲取應用啟動時間
啟動時間的重要性:應用的啟動時間關係著使用者的感知體驗,當應用啟動時間過長時,使用者會認為應用無響應而選擇退出這個app或者解除安裝該app
啟動時間分兩種情況:首次啟動(冷啟動)和非首次啟動(熱啟動)應用所花費的時間。
在測試app啟動時間之前,我們先來看看這張經典的Activity生命週期圖:
流程簡介:
1.啟動Activity:系統會先呼叫onCreate方法,然後呼叫onStart方法,最後呼叫onResume, Activity進入執行狀態。
2.當前Activity被其他Activity覆蓋或被鎖屏:系統會呼叫onPause方法,暫停當前 Activity的執行。
3.當前Activity由被覆蓋狀態回到前臺或解鎖屏:系統會呼叫onResume方法,再次進入執行狀態。
4.當前Activity轉到新的Activity介面或按Home鍵回到主屏,自身退居後臺:系統會先呼叫onPause方法,然後呼叫onStop方法,進入停滯狀態。
5.使用者後退回到此Activity:系統會先呼叫onRestart方法,然後呼叫onStart方法,最後呼叫onResume方法,再次進入執行狀態。
6.當前Activity處於被覆蓋狀態或者後臺不可見狀態,即第2步和第4步,系統記憶體不足,殺死當前Activity,而後使用者退回當前Activity:再次呼叫onCreate方法、onStart方
法、onResume方法,進入執行狀態。
7.使用者退出當前Activity:系統先呼叫onPause方法,然後呼叫onStop方法,最後呼叫 onDestory方法,結束當前Activity。
從Activity的生命週期流程圖,我們可以看出啟動時間即onCreate()方法開始執行到onResume()方法執行結束的時間,也就是activity完全啟動的時間。
那麼怎麼獲取該時間?
方法一:通過logcat中ActivityManager的相關資料獲取。
adb logcat -d -s ActivityManager|findstr "Displayed">D:\log.txt
log內容如下:
方法二:
1)獲取app包名和類名
>adb shell dumpsys activity|findstr mFocusedActivity
2)獲取啟動時間
>adb shell am start -W –n <packageName>/<activityName>
如果只關心某個應用自身啟動耗時,參考TotalTime;
如果關心繫統啟動應用耗時,參考WaitTime;
如果關心應用有介面Activity啟動耗時,參考ThisTime。