啟動時(shí)間
冷啟動
進(jìn)程首次創(chuàng)建
#獲取包名和Activity名稱版姑,輸入如下命令后啟動APP在log中即可獲取到柱搜;
$adb logcat | grep START
#啟動APP 返回time值可以計(jì)算
$adb shell am start -W -n com.android.browser/.BrowserActivity
#停止APP啟動
$adb shell am force-stop com.android.browser
熱啟動
進(jìn)程通過點(diǎn)擊Home鍵等進(jìn)入后臺,并未殺死再次啟動剥险;
#啟動指令同冷啟動
$adb shell am start -W -n com.android.browser/.BrowserActivity
#停止APP聪蘸,進(jìn)入后臺
$adb shell input keyevent 3
啟動時(shí)間腳本化
方法1. 獲取命令執(zhí)行時(shí)間,作為啟動時(shí)間參考值表制;
方法2. 在命令前后加上時(shí)間戳健爬,以差值作為參考值(推薦);
執(zhí)行時(shí)間獲取需要
app Class: LaunchApp么介、StopApp娜遵、GetLaunchedTime;
Controller Class: run壤短、CollectAllData设拟、SaveDataToCSV慨仿;
#第一種方法的實(shí)現(xiàn):
CPU
#獲取數(shù)據(jù)
$adb shell dumpsys cpuinfo | grep packagename
流量
#獲取進(jìn)程ID指令
$adb shell ps | grep packagename
#獲取進(jìn)程對應(yīng)的流量
$adb shell cat /proc/pid/net/dev
電量
#查看電池狀態(tài)(是否充電、電池剩余量level纳胧、)
$adb shell dumpsys battery
#切換電池到非充電狀態(tài) 2是充電狀態(tài)镰吆,除2以外都是非充電狀態(tài);
$adb shell dumpsys battery set status 1
內(nèi)存
定期采集數(shù)據(jù)躲雅,長時(shí)間使用之后處于恒定情況鼎姊,可以判定為沒有內(nèi)存泄漏;
#獲取內(nèi)存
$adb shell top -d 1 > meminfo #-d 制定每一秒鐘刷新一次
#VSS - Virtual Set Size 虛擬消耗內(nèi)存
#RSS - R Set Size 實(shí)際消耗內(nèi)存
FPS&過度渲染
FPS : 每秒幀數(shù)
過度渲染:描述的是屏幕上的某個(gè)像素在同一幀的時(shí)間內(nèi)被繪制了多少次相赁;
FPS原理:手機(jī)屏幕顯示的內(nèi)容是通過Android系統(tǒng)的SurfaceFLinger類相寇,把當(dāng)前系統(tǒng)里所有進(jìn)程需要顯示的信息合成一幀,然后提交到屏幕進(jìn)行顯示钮科。FPS 就是1s內(nèi)SurfaceFLinger提交到屏幕的幀數(shù)唤衫。
1.有時(shí)候FPS很低,但是我們卻不覺得App卡頓绵脯?
2.App停止操作之后佳励,F(xiàn)PS還是一直在變化,這樣的情況是否會影 響FPS的準(zhǔn)確度蛆挫?