查看當(dāng)前界面Activity的方法:
1)運(yùn)行命令:adb shell dumpsys window | findstr "mCurrentFocus"
mCurrentFocus=Window{227cb04 u0 com.oppo.music/com.oppo.music.MainListActivity}
從結(jié)果中可知:
當(dāng)前應(yīng)用包名:com.oppo.music
當(dāng)前界面Activity:com.oppo.music.MainListActivity
2)查看應(yīng)用的PID
adb shell ps | findstr “com.oppo.music”,找到PID對(duì)應(yīng)的列

1、“高速攝像機(jī)或iphone慢動(dòng)作”查看應(yīng)用的啟動(dòng)時(shí)間
1)使用高速相機(jī)或Iphone的慢動(dòng)作(240ps)錄制應(yīng)用的啟動(dòng)視頻
2)使用QucikTime的幀分析功能,確定好起始幀(手指按下抬起時(shí))和結(jié)束幀(應(yīng)用完全顯示)
3)根據(jù)幀數(shù)計(jì)算啟動(dòng)時(shí)間:=1000*幀數(shù)量/240
備注:最接近真實(shí)用戶使用場景,但是操作復(fù)雜,成本高
2、“ActivityManager”查看應(yīng)用的啟動(dòng)時(shí)間
備注:系統(tǒng)main log中也會(huì)有對(duì)應(yīng)的顯示(或adb shell logcat -b main | findstr ActivityManager)更佳
1)運(yùn)行結(jié)果:
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應(yīng)用的啟動(dòng)時(shí)間

3、“WaitTime”查看應(yīng)用的啟動(dòng)時(shí)間
測試方法:adb shell am start -W –S packagename/MainActivity命令
1)結(jié)果時(shí)間說明
ThisTime:一連串啟動(dòng)Activity的最后一個(gè)Activity開始算起始時(shí)間
TotalTime:一連串啟動(dòng)Activity的第一個(gè)Activity開始算起始時(shí)間
WaitTime:總的耗時(shí),但是包括前一個(gè)應(yīng)用 Activity pause 的時(shí)間和新應(yīng)用啟動(dòng)的時(shí)間
說明:例如有的應(yīng)用啟動(dòng)Activity的時(shí)候,會(huì)先顯示一個(gè)白色的Activity,然后在顯示正常Activity,這個(gè)時(shí)候TotalTime就是從第一個(gè)Activity啟動(dòng)作為起始時(shí)間,如果只有一個(gè)Activity則ThisTime和TotalTime相等
總結(jié):
如果只關(guān)心某個(gè)應(yīng)用自身啟動(dòng)耗時(shí),參考TotalTime;如果關(guān)心系統(tǒng)啟動(dòng)應(yīng)用耗時(shí),參考WaitTime;如果關(guān)心應(yīng)用有界面Activity啟動(dòng)耗時(shí),參考ThisTime

4、“am_activity_launch_time”查看應(yīng)用啟動(dòng)時(shí)間
測試方法:
1)開啟系統(tǒng)的moblie log,例如mtk的moblie log,然后啟動(dòng)應(yīng)用(或者adb shell logcat -b events | findstr am_activity_launch_time)
2)從moblie log中找到類似如下的event log:events_log_3__2019_0418_152200
3)搜索關(guān)鍵詞:“am_activity_launch_time”,然后匹配對(duì)應(yīng)的包名,如下:
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)應(yīng)用的啟動(dòng)時(shí)間為668ms、680ms

5、Systrace查看應(yīng)用的啟動(dòng)時(shí)間
1)抓取應(yīng)用啟動(dòng)的trace文件
a、開發(fā)給的Python腳本抓取,需要安裝對(duì)應(yīng)的python

b、打開Android自帶的monitor工具抓取,需要安裝JAVA環(huán)境和android sdk包


2)chrome瀏覽器輸入chrome://tracing/,然后load對(duì)應(yīng)的trace文件

3)搜索iq,如果能搜到說明正確抓取了trace文件,否則沒有抓到啟動(dòng)時(shí)間點(diǎn)

4)找到應(yīng)用對(duì)應(yīng)的PID或包名的那一行

5)找到UI Thread那一行,然后可以使用【W(wǎng)】放大,【S】縮小,【A】左移,【S】右移,注意界面上的操作導(dǎo)航,需要選取對(duì)應(yīng)的項(xiàng)才能使用快捷鍵
放大并移動(dòng)找到activityStart那一列,選中該項(xiàng)并點(diǎn)擊鍵盤【m】鍵可以查看階段時(shí)間如下:

6)在activityStart下一行對(duì)應(yīng)的handleLaunchActivity找到第一個(gè)draw,按下【ctrl】然后選中activityStart在選中draw,在按下【m】鍵,如下圖:

7)從步驟5中可以看到,music的啟動(dòng)時(shí)間為458.656ms
備注:界面快捷鍵操作


6、adb腳本錄屏方法(不一定有用,有的機(jī)器無該命令或–bugreport選項(xiàng),且需要android API21+)
測試方法:
1)adb shell screenrecord –bugreport /sdcard/test.mp4
2)使用QuickTime分析視頻即可,同方法1
備注:查看是否支持-bugreport選項(xiàng)
使用 adb shell screencap –help查看是否支持—bugreport選項(xiàng)
7、各種方法測試數(shù)據(jù)比較
