查看頁面啟動時(shí)間:
命令行 碉克,在sdk 路徑下(E:\SDK\Sdk\platform-tools\systrace)打開命令窗口 址愿,輸入以下命令
adb shell am start -W com.mediatek.camera/com.android.camera.CameraActivity
ubuntu@ubuntu:/media/disk/work/core$ adb shell am start -W com.mediatek.camera/com.android.camera.CameraActivity
Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER]
cmp=com.mediatek.camera/com.android.camera.CameraActivity }
Status: ok
Activity: com.mediatek.camera/com.android.camera.CameraActivity
ThisTime: 2871
TotalTime: 2871
WaitTime: 2949
Complete
格式為adb shell am start -W 包名/全類名或叫activity名
打印的結(jié)果為
ThisTime 該activity啟動耗時(shí)
TotalTime 應(yīng)用自身啟動耗時(shí)=ThisTime+應(yīng)用application等資源啟動時(shí)間
WaitTime 系統(tǒng)啟動應(yīng)用耗時(shí)=TotalTime+系統(tǒng)資源啟動時(shí)間
在測試該啟動時(shí)間時(shí)需要理解兩個(gè)概念
冷啟動:應(yīng)用第一次啟動
熱啟動:按back按鍵后再啟動或非第一次啟動切沒有清除該應(yīng)用后臺或緩存數(shù)據(jù)
上面的數(shù)據(jù)為冷啟動打印的數(shù)據(jù),下面運(yùn)行熱啟動的測試結(jié)果:
ubuntu@ubuntu:/media/disk/work/core$ adb shell am start -W com.mediatek.camera/com.android.camera.CameraActivity
Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.mediatek.camera/com.android.camera.CameraActivity }
Status: ok
Activity: com.mediatek.camera/com.android.camera.CameraActivity
ThisTime: 1848
TotalTime: 1848
WaitTime: 1895
Complete
該命令具體實(shí)現(xiàn)在/frameworks/base/cmds/am/src/com/android/commands/am/Am.java溅潜,原理是跨Binder調(diào)用>ActivityManagerService.startActivityAndWait() 接口煮剧,其中返回?cái)?shù)據(jù)分別調(diào)用對應(yīng)
startTime: 調(diào)用startActivityAndWait()的時(shí)間點(diǎn)
endTime: 調(diào)用startActivityAndWait()函數(shù)調(diào)用返回的時(shí)間點(diǎn)
WaitTime: 調(diào)用startActivityAndWait()調(diào)用耗時(shí)。
再通過之間的計(jì)算得到谍椅。