av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

獲取Android界面性能數(shù)據(jù)的快捷方法

瀏覽:9日期:2022-09-19 10:50:50
探測(cè) 界面繪制性能

獲取界面的繪制性能有很多種方法,比如說(shuō) Systrace 但是這種方法 有一個(gè)不太好的地方就是使用起來(lái)較為復(fù)雜, 有沒(méi)有一種 谷歌官方推薦 的方便一點(diǎn)的方法 ,其實(shí)是有的,只需要一個(gè)函數(shù) 就可以獲得layout的時(shí)間 非常適合于 我們平時(shí)開(kāi)發(fā)中 測(cè)試頁(yè)面性能。

//調(diào)試界面性能時(shí)使用,可打印關(guān)鍵的layout耗時(shí),使用完畢需刪除fun Activity.printPerformanceForLayout(tag: String = 'performance') { val handlerThread = HandlerThread('FrameMetrics') handlerThread.start() val handler = Handler(handlerThread.looper) if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) {window.addOnFrameMetricsAvailableListener({ _, frameMetrics, _ -> val frameMetricsCopy = FrameMetrics(frameMetrics) //返回的是納秒 val layoutMeasureDurationNs = frameMetricsCopy.getMetric(FrameMetrics.LAYOUT_MEASURE_DURATION) //多數(shù)情況下更習(xí)慣于ms val layoutMeasureDurationMs = layoutMeasureDurationNs.toDouble() / 1000000.toDouble() //如果有超過(guò)16ms的輸出 那就要考慮你的界面是否需要進(jìn)行優(yōu)化了 Log.v('wuyue', 'layoutMeasureDurationMs:' + layoutMeasureDurationMs)}, handler) }}

看下運(yùn)行結(jié)果:

獲取Android界面性能數(shù)據(jù)的快捷方法

可以根據(jù)log的結(jié)果 來(lái) 估算頁(yè)面的渲染性能。類(lèi)似于這種》=16ms 才layoutMeasure一次的,顯然是界面有了卡頓

谷歌原文

界面首次繪制完成時(shí)間

通常而言,我們有時(shí)候還希望獲取到界面啟動(dòng) 到“界面繪制完成” 的時(shí)間 為什么要加引號(hào)? 因?yàn)?往往 ActivityTaskManager: Displayed 展示出來(lái)的結(jié)果 僅僅是

表示了從啟動(dòng)應(yīng)用到系統(tǒng)認(rèn)為其 '已啟動(dòng)' 所花費(fèi)的時(shí)間,其中包括繪制第一幀 (所以是 '已顯示' 的狀態(tài))

但大部分的情況是我們界面啟動(dòng)以后 還會(huì)做一些業(yè)務(wù)上的操作 比如去io獲取一些重要的信息 然后刷新ui 怎么獲取到 界面啟動(dòng) 到這個(gè)時(shí)間點(diǎn)的耗時(shí)?

大部分人都是在在onCreate里面 獲取一個(gè)時(shí)間戳 然后在業(yè)務(wù)操作完成的時(shí)間點(diǎn) 再獲取一個(gè)時(shí)間戳 然后算一下 差額,

其實(shí)現(xiàn)在就有更簡(jiǎn)便的寫(xiě)法

reportFullyDrawn

在你認(rèn)為合適的地方 調(diào)用這個(gè)函數(shù) 然后觀測(cè)如下日志:

獲取Android界面性能數(shù)據(jù)的快捷方法

這是一種更為簡(jiǎn)便的觀測(cè)方法

更快捷的獲取activity的啟動(dòng)時(shí)間

有時(shí)候我們喜歡觀察如下日志:

獲取Android界面性能數(shù)據(jù)的快捷方法

來(lái)獲取activity的啟動(dòng)時(shí)間

但其實(shí)有時(shí)候 這樣也挺不方便的,尤其是需要頻繁測(cè)試一個(gè)頁(yè)面的啟動(dòng)性能

老是靠手點(diǎn) 很不方便,其實(shí)可以用 shell 命令來(lái)完成:

adb shell am start-activity -W -n 包名/activity名稱(chēng)

獲取Android界面性能數(shù)據(jù)的快捷方法

也可以對(duì)腳本的執(zhí)行結(jié)果 進(jìn)行g(shù)rep 只抽取你關(guān)鍵的total time 進(jìn)行展示

adb shell am start-activity -W -n 包名/activity名稱(chēng) | grep 'TotalTime' | cut -d ’ ’ -f 2

adb shell am start-activity -S -W -R 100 -n 包名/activity名稱(chēng)獲取應(yīng)用冷啟動(dòng) 性能

有時(shí)候我們需要統(tǒng)計(jì)app的冷啟動(dòng)性能,單次結(jié)果往往不準(zhǔn)確 還需要多次統(tǒng)計(jì)以后 做平均值

也可以用如下腳本來(lái)實(shí)現(xiàn), 注意不是單引號(hào) 而是 `

for i in `seq 1 100`do adb shell am force-stop com.vivo.space sleep 2 adb shell am start-activity -W -n 包名/activity名稱(chēng) | grep 'TotalTime' | cut -d ’ ’ -f 2done

效果如下:

獲取Android界面性能數(shù)據(jù)的快捷方法

以上就是獲取Android界面性能數(shù)據(jù)的快捷方法的詳細(xì)內(nèi)容,更多關(guān)于獲取Android界面性能數(shù)據(jù)的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Android
相關(guān)文章:
主站蜘蛛池模板: 日本一区二区高清不卡 | 久久久91精品国产一区二区三区 | 日本三级电影在线观看视频 | av中文在线 | 一区二区久久电影 | 偷拍自拍在线观看 | 国产一区二区久久久 | 欧美性久久久 | 国产综合视频 | 91福利在线观看 | 一区二区三区在线免费看 | 天天狠狠 | 午夜精品在线观看 | 欧美亚洲国产精品 | 欧美另类视频在线 | 国产免费xxx | 色欧美日韩 | 91视频电影| 欧美日韩一 | 国产一区二区三区色淫影院 | 成人一区二区视频 | 欧美日韩在线一区二区 | 亚洲第一黄色网 | 久久国内精品 | 国产日韩av一区二区 | 九色 在线 | 中文字幕二区 | 天天操夜夜操 | 亚洲精品国产a久久久久久 中文字幕一区二区三区四区五区 | 欧美大片一区 | 久久精品国产免费高清 | 欧美精品日韩 | 久久久久一区二区三区 | 精品国产青草久久久久福利 | 国产精品一区二区视频 | 小早川怜子xxxxaⅴ在线 | 亚洲视频免费观看 | 亚洲国产精品久久久久秋霞不卡 | 一区二区福利视频 | 成人免费视频在线观看 | 国产精品视频专区 |