啟動時間的測試方法
- adb shell am start -W packagename/activity
- ddms adb logcat監控
ddms adb logcat
- 創建過濾條件如下:
- Fliter Name:Display
- By Log Tag:ActivityManager
Paste_Image.png
- 啟動應用,查看DDMS打印的Display消息,根據應用名稱記錄啟動時間數據。計算從點擊應用到應用顯示主頁的的時間差。如下圖所示,紅線對應的時間即為該次啟動時間。(有些應用啟動會經歷2個階段,如連接服務器和進入主頁,啟動時間為累加2個display打印的時間值)
Log信息樣例如截圖:
Paste_Image.png
應用啟動場景分析
應用第一次啟動-冷啟動
- 也就是我們常說的冷啟動,這時候你的應用程序的進程是沒有創建的. 這也是大部分應用的使用場景.用戶在桌面上點擊你應用的 icon 之后,首先要創建進程,然后才啟動 MainActivity.
- 這時候adb shell am start -W packagename/MainActivity 返回的結果,就是標準的應用程序的啟動時間(注意 Android 5.0 之前的手機是沒有 WaitTime 這個值的):
adb shell am start -W com.media.painter/com.media.painter.PainterMainActivity
Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.media.painter/.PainterMainActivity }
Status: ok
Activity: com.media.painter/.PainterMainActivity
ThisTime: 355
TotalTime: 355
WaitTime: 365
Complete
- 如果只關心某個應用自身啟動耗時,參考TotalTime;
- 如果關心系統啟動應用耗時,參考WaitTime;
- 如果關心應用有界面Activity啟動耗時,參考ThisTime。
應用非第一次啟動-熱啟動
- 如果是你按Back鍵,并沒有將應用進程殺掉的話,那么執行上述命令就會快一些,因為不用創建進程了,只需要啟動一個Activity即可。這也就是我們說的應用熱啟動。