查看當前界面Activity的方法:
1)運行命令:adb shell dumpsys window | findstr "mCurrentFocus"
mCurrentFocus=Window{227cb04 u0 com.oppo.music/com.oppo.music.MainListActivity}
從結果中可知:
當前應用包名:com.oppo.music
當前界面Activity:com.oppo.music.MainListActivity
2)查看應用的PID
adb shell ps | findstr “com.oppo.music”,找到PID對應的列
1、“高速攝像機或iphone慢動作”查看應用的啟動時間
1)使用高速相機或Iphone的慢動作(240ps)錄制應用的啟動視頻
2)使用QucikTime的幀分析功能,確定好起始幀(手指按下抬起時)和結束幀(應用完全顯示)
3)根據幀數計算啟動時間:=1000*幀數量/240
備注:最接近真實用戶使用場景,但是操作復雜,成本高
2、“ActivityManager”查看應用的啟動時間
備注:系統main log中也會有對應的顯示(或adb shell logcat -b main | findstr ActivityManager)更佳
1)運行結果:
04-19 15:13:25.919 1181 1216 I ActivityManager: Displayed com.oppo.music/.MainListActivity: +677ms
04-19 15:13:33.556 1181 1216 I ActivityManager: Displayed com.oppo.music/.MainListActivity: +660ms
677ms和660ms就是music應用的啟動時間
3、“WaitTime”查看應用的啟動時間
測試方法:adb shell am start -W –S packagename/MainActivity命令
1)結果時間說明
ThisTime:一連串啟動Activity的最后一個Activity開始算起始時間
TotalTime:一連串啟動Activity的第一個Activity開始算起始時間
WaitTime:總的耗時,但是包括前一個應用 Activity pause 的時間和新應用啟動的時間
說明:例如有的應用啟動Activity的時候,會先顯示一個白色的Activity,然后在顯示正常Activity,這個時候TotalTime就是從第一個Activity啟動作為起始時間,如果只有一個Activity則ThisTime和TotalTime相等
總結:
如果只關心某個應用自身啟動耗時,參考TotalTime;如果關心系統啟動應用耗時,參考WaitTime;如果關心應用有界面Activity啟動耗時,參考ThisTime
4、“am_activity_launch_time”查看應用啟動時間
測試方法:
1)開啟系統的moblie log,例如mtk的moblie log,然后啟動應用(或者adb shell logcat -b events | findstr am_activity_launch_time)
2)從moblie log中找到類似如下的event log:events_log_3__2019_0418_152200
3)搜索關鍵詞:“am_activity_launch_time”,然后匹配對應的包名,如下:
04-18 15:21:28.365484 1181 1216 I am_activity_launch_time: [0,73476478,com.oppo.music/.MainListActivity,668,668]
04-18 15:21:37.295923 1181 1216 I am_activity_launch_time: [0,231925826,com.oppo.music/.MainListActivity,680,680]
4)應用的啟動時間為668ms、680ms
5、Systrace查看應用的啟動時間
1)抓取應用啟動的trace文件
a、開發給的Python腳本抓取,需要安裝對應的python
b、打開Android自帶的monitor工具抓取,需要安裝JAVA環境和android sdk包
2)chrome瀏覽器輸入chrome://tracing/,然后load對應的trace文件
3)搜索iq,如果能搜到說明正確抓取了trace文件,否則沒有抓到啟動時間點
4)找到應用對應的PID或包名的那一行
5)找到UI Thread那一行,然后可以使用【W】放大,【S】縮小,【A】左移,【S】右移,注意界面上的操作導航,需要選取對應的項才能使用快捷鍵
放大并移動找到activityStart那一列,選中該項并點擊鍵盤【m】鍵可以查看階段時間如下:
6)在activityStart下一行對應的handleLaunchActivity找到第一個draw,按下【ctrl】然后選中activityStart在選中draw,在按下【m】鍵,如下圖:
7)從步驟5中可以看到,music的啟動時間為458.656ms
備注:界面快捷鍵操作
6、adb腳本錄屏方法(不一定有用,有的機器無該命令或–bugreport選項,且需要android API21+)
測試方法:
1)adb shell screenrecord –bugreport /sdcard/test.mp4
2)使用QuickTime分析視頻即可,同方法1
備注:查看是否支持-bugreport選項
使用 adb shell screencap –help查看是否支持—bugreport選項
7、各種方法測試數據比較