App啓動時間的包括首次安裝啓動時間、冷啓動時間、熱啓動時間3種
啓動時間的採集方式均通過如下adb命令
#命令行輸入命令:
adb shell am start -W -n packageName/ActivityName
#結果如下
Status: ok
Activity: packageName/activityName
ThisTime: 1298
TotalTime: 1298
WaitTime: 1308
Complete
1)首次安裝啓動
首次安裝後,需要做資源初始化操作,因此,如果需要採集這個值,就需要在App安裝後執行上述命令
2)冷啓動
冷啓是後臺進程被關閉時啓動App所需的時間,關閉進程可以在手機端滑動關閉(各個手機操作略有差異)也可以通過adb命令(參考如下)
adb shell am force-stop packageName
3)熱啓動
熱啓動是不關閉進程,比如按home鍵或者adb命令(參考如下)返回系統主界面,但App進程仍在後臺運行
adb shell input keyevent 3
輸出結果有三個值,thisTime,totalTime,waitTime.
thisTime(最後一個activity啓動耗費時間)=curTime-displayStartTime(一連串啓動Activity中的最後一個Activity的啓動時間點)
totalTime=mlaunchStartTime(一連串頁面中第一個activity啓動時間,可能無界面)!=0?curTime-mlaunchStartTime:thisTime
waitTime=endTime(系統調用startActivityAndWait完成時間點)-startTime(系統調用startActivityAndWait開始時間點)
也可以說:
waitTime=initTime(系統初始化的一些工作,ActivityManagerService創建ActivityRecord記錄塊和選擇合理的Task、將當前Resume的Activity進行pause)+totalTime
也就是說應用啓動總耗時應該是waitTime,但是initTime這個時間段內我們沒有太多優化空間,所以我們可能更關注totalTime