日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

android view分析工具,Android 性能分析工具之TraceView

發布時間:2024/8/1 Android 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android view分析工具,Android 性能分析工具之TraceView 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Traceview本身是一個數據分析工具, Android 平臺將Traceview作為 Android SDK內置的一個工具,主要用于加載 Android 應用程序所生成的trace文件并且分析trace文件采集到的數據里面每個方法(函數)在不同線程里調用次數、消耗的時間等等。

Trace文件里數據的采集則需要使用 Android SDK 中的 Debug 類或者利用 DDMS 工具

Traceview在Android SDK的tools目錄里,如下圖:

配置環境

步驟一:在系統變量里新建ANDROID_HOME

步驟二:在系統變量的Path里添加 %ANDROID_HOME%\tools

使用代碼生成 trace 文件

在需要分析代碼的開始位置添加以下代碼

//文件默認保存到 sdcard 根目錄下,"/sdcard/testTraceView.trace"

Debug.startMethodTracing("testTraceView");

復制代碼

其中testTraceView參數是自定義,其實就是生成的TraceView文件的文件名,例如testTraceView.trace

在需要分析的結束位置添加以下代碼

Debug.stopMethodTracing();

復制代碼

需要添加的權限

復制代碼

報錯示例

沒有獲取到權限

E/art: Unable to open trace file '/sdcard/testTrace.trace': Permission denied

復制代碼

2.打開testTrace.trace文件時報錯 ,因為沒有執行Debug.stopMethodTracing();

Failed to read the trace filejava.io.IOException: Key section does not have an *end marker

at com.android.traceview.DmTraceReader.parseKeys(DmTraceReader.java:420)

at com.android.traceview.DmTraceReader.generateTrees(DmTraceReader.java:91)

at com.android.traceview.DmTraceReader.(DmTraceReader.java:87)

at com.android.traceview.MainWindow.main(MainWindow.java:286)

復制代碼

打開testTrace.trace文件時報錯的重要提示:Key section does not have an *end marker at com.android.traceview,說明沒有添加或者執行Debug.stopMethodTracing();

查看是否生成trace文件

進入到shell模式執行下面的指令語句在doc命令窗口或者AndroidStudio里Terminal窗口里執行adb shell,下圖本人寫的demo在AndroidStudio里Terminal窗口查看的截圖:

注意:如果Debug.startMethodTracing("testTraceView");startMethodTracing里的參數只填寫testTraceView,則上面的截圖步驟只需要執行1、2兩步就可看到testTraceView.trace文件 需要知道本人為什么執行3、4兩步,請看本人demo里的startMethodTracing里的參數

導出trace文件

進入到shell模式執行下面的指令語句adb pull /sdcard/testTraceView.trace E:\folder命令將testTraceView.trace導出到指定到E盤folder目錄。

本人demo里需要執行的命令是: adb pull /sdcard/TraceView/MainActivity_2018-12-07_20_29_02.trace E:\folder

打開trace文件

進入到shell模式執行下面的指令語句traceview E:\folder\testTraceView.trace

TraceView界面介紹

Traceview 界面分上下兩部分

上面是時間軸面板 (Timeline Panel)

左側顯示的是線程信息

右側不同顏色代表不同方法(函數),同一個顏色越長代表該方法執行的時間越久

右側鼠標放在上面會出現時間線縱軸,在頂部會顯示當前時間線所執行的具體函數信息

空白表示這個時間段內沒有執行內容

下面是分析面板

各列作用說明

列名

描述

Name

該線程運行過程中所調用的函數名

Incl Cpu Time

某函數占用的CPU時間,包含內部調用其它函數的CPU時間

Excl Cpu Time

某函數占用的CPU時間,但不含內部調用其它函數所占用的CPU時間

Incl Real Time

某函數運行的真實時間(以毫秒為單位),內含調用其它函數所占用的真實時間

Excl Real Time

某函數運行的真實時間(以毫秒為單位),不含調用其它函數所占用的真實時

Call+Recur Calls/Total

某函數被調用次數以及遞歸調用占總調用次數的百分比

Cpu Time/Call

某函數調用CPU時間與調用次數的比。相當于該函數平均執行時間

Real Time

同CPU Time/Call類似,只不過統計單位換成了真實時間

注意:每一個Time列還對應有一個用時間百分比來統計的列(如Incl Cpu Time列對應還有一個列名為Incl Cpu Time %的列,表示以時間百分比來統計的Incl Cpu Time)

總結

以上是生活随笔為你收集整理的android view分析工具,Android 性能分析工具之TraceView的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。