查看當(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í)用戶使用場(chǎng)景,但是操作復(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í)間
測(cè)試方法: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í)間
測(cè)試方法:
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+)
測(cè)試方法:
1)adb shell screenrecord –bugreport /sdcard/test.mp4
2)使用QuickTime分析視頻即可低散,同方法1
備注:查看是否支持-bugreport選項(xiàng)
使用 adb shell screencap –help查看是否支持—bugreport選項(xiàng)
7俯邓、各種方法測(cè)試數(shù)據(jù)比較