亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

獲取Android界面性能數據的快捷方法

瀏覽:3日期:2022-09-19 10:50:50
探測 界面繪制性能

獲取界面的繪制性能有很多種方法,比如說 Systrace 但是這種方法 有一個不太好的地方就是使用起來較為復雜, 有沒有一種 谷歌官方推薦 的方便一點的方法 ,其實是有的,只需要一個函數 就可以獲得layout的時間 非常適合于 我們平時開發中 測試頁面性能。

//調試界面性能時使用,可打印關鍵的layout耗時,使用完畢需刪除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) //多數情況下更習慣于ms val layoutMeasureDurationMs = layoutMeasureDurationNs.toDouble() / 1000000.toDouble() //如果有超過16ms的輸出 那就要考慮你的界面是否需要進行優化了 Log.v('wuyue', 'layoutMeasureDurationMs:' + layoutMeasureDurationMs)}, handler) }}

看下運行結果:

獲取Android界面性能數據的快捷方法

可以根據log的結果 來 估算頁面的渲染性能。類似于這種》=16ms 才layoutMeasure一次的,顯然是界面有了卡頓

谷歌原文

界面首次繪制完成時間

通常而言,我們有時候還希望獲取到界面啟動 到“界面繪制完成” 的時間 為什么要加引號? 因為 往往 ActivityTaskManager: Displayed 展示出來的結果 僅僅是

表示了從啟動應用到系統認為其 '已啟動' 所花費的時間,其中包括繪制第一幀 (所以是 '已顯示' 的狀態)

但大部分的情況是我們界面啟動以后 還會做一些業務上的操作 比如去io獲取一些重要的信息 然后刷新ui 怎么獲取到 界面啟動 到這個時間點的耗時?

大部分人都是在在onCreate里面 獲取一個時間戳 然后在業務操作完成的時間點 再獲取一個時間戳 然后算一下 差額,

其實現在就有更簡便的寫法

reportFullyDrawn

在你認為合適的地方 調用這個函數 然后觀測如下日志:

獲取Android界面性能數據的快捷方法

這是一種更為簡便的觀測方法

更快捷的獲取activity的啟動時間

有時候我們喜歡觀察如下日志:

獲取Android界面性能數據的快捷方法

來獲取activity的啟動時間

但其實有時候 這樣也挺不方便的,尤其是需要頻繁測試一個頁面的啟動性能

老是靠手點 很不方便,其實可以用 shell 命令來完成:

adb shell am start-activity -W -n 包名/activity名稱

獲取Android界面性能數據的快捷方法

也可以對腳本的執行結果 進行grep 只抽取你關鍵的total time 進行展示

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

adb shell am start-activity -S -W -R 100 -n 包名/activity名稱獲取應用冷啟動 性能

有時候我們需要統計app的冷啟動性能,單次結果往往不準確 還需要多次統計以后 做平均值

也可以用如下腳本來實現, 注意不是單引號 而是 `

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名稱 | grep 'TotalTime' | cut -d ’ ’ -f 2done

效果如下:

獲取Android界面性能數據的快捷方法

以上就是獲取Android界面性能數據的快捷方法的詳細內容,更多關于獲取Android界面性能數據的資料請關注好吧啦網其它相關文章!

標簽: Android
相關文章:
主站蜘蛛池模板: 亚洲成人综合视频 | 美国一级大黄大色毛片视频一 | 午夜婷婷网| 在线亚洲国产精品区 | 久久精品久久久久久久久人 | 亚州黄色网址 | 免费国内精品久久久久影院 | 农村一级黄色片 | 日本特黄绿像大片免费看 | 亚洲欧美国产精品久久久 | 亚洲精品资源在线 | 亚洲二区在线视频 | 免费观看成人羞羞视频网站观看 | 在线播放亚洲美女视频网站 | 亚洲日产综合欧美一区二区 | 很黄很黄的毛片欧美 | 日韩欧美一二区 | 免费xxxxx大片在线观看影视 | 国内视频在线 | 欧美三级一区二区 | 国产精品自拍在线观看 | 激情六月丁香婷婷 | 正在播放一区二区 | 亚洲一区二区三区四区五区 | 中文字幕欧美视频 | 色婷婷综合在线视频最新 | 日韩中文字幕在线亚洲一区 | 色综合久久中文综合网 | 999久久狠狠免费精品 | 国产一国产a一级毛片 | 国产视频一区二 | 日本护士xxxx爽爽爽 | 欧美一级高清黄图片 | 又黄又爽的成人免费视频播放 | 成人亚洲欧美日韩在线 | 巨臀中文字幕一区二区视频 | 91po国产在线高清福利 | 一级黄色片在线观看 | 精品国产理论在线观看不卡 | 欧美啪啪毛片一区二区 | 青青青国产精品国产精品久久久久 |