1. 程式人生 > >Android獲取應用啟動時間

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。