編輯:關於android開發
Traceview是執行日志的圖形查看器。這些日志通過使用Debug類記錄。 Traceview可以幫助調試應用和profile性能。本文參考英文地址:http://developer.android.com/intl/zh-cn/tools/debugging/debugging-tracing.html。
Traceview可以加載trac日志文件(通過添加跟蹤代碼添加到應用或由DDMS生成)。TraceView的界面分為兩部分,上面是時間線面板(Time Panel),描述了當每個線程和方法的啟動和停止時間。下面是profile面板,概述方法所做的事情,如下圖所示:
時間線面板:
profile面板:
Name :調用項,前面的數字是編號,展開可以看到有的有Parent 和Children子項。
Incl : inclusive時間占總時間的百分比
inclusive : 子方法的調用時間和方法執行時間
Excl : 執行占總時間的百分比。
Exclusive : 方法執行時間,不包含子方法的時間。
Calls+Recur Calls/Total : 調用和重復調用的次數
Time/Call : 總的時間。(ms)
有兩種方法可以生成跟蹤日志:
在代碼中包含Debug類並調用其方法,如startMethodTracing()和stopMethodTracing(),這種方法很精確。
使用DDMS的profile分析功能來生成跟蹤日志。不太准確,不能夠訪問應用程序的代碼或不需要精確的記錄時間時使用。
注意:如果使用Debug類,應用程序必須具有外部存儲的寫權限(WRITE_EXTERNAL_STORAGE)。
// start tracing to "/sdcard/calc.trace" Debug.startMethodTracing("calc"); // ... // stop tracing Debug.stopMethodTracing();
應用調用startMethodTracing()時,系統會創建<trace-base-name>.trace文件。這包含二進制方法跟蹤數據和線程及方法名映射表。
然後系統開始緩沖生成的跟蹤數據,直到應用程序調用stopMethodTracing(),此時將其緩沖的數據寫入到輸出文件中。如果系統調用stopMethodTracing前達到最大緩沖器大小,系統停止trace並發送通知給控制台。
開啟profile時,解釋的代碼運行速度會較慢,並不代表實際執行速度。
在Android的4.4和更高版本,取樣會減少性能影響。使用startMethodTracingSampling()即可,停止依舊使用stopMethodTracing()。
執行實例:
C:\Users\Administrator>adb pull /mnt/sdcard/tc.trace /tmp/tc.trace C:\Users\Administrator>adb shell am start -n com.mamlambo.article.simplecalc/.MainActivity Starting: Intent { cmp=com.mamlambo.article.simplecalc/.MainActivity } C:\Users\Administrator>adb shell am profile com.mamlambo.article.simplecalc start /mnt/sdcard/tc.trace C:\Users\Administrator>adb shell am profile com.mamlambo.article.simplecalc stop C:\Users\Administrator>adb pull /mnt/sdcard/tc.trace /tmp/tc.trace 1352 KB/s (2429326 bytes in 1.754s) C:\Users\Administrator>traceview c:\tmp\tc.trace The standalone version of traceview is deprecated. Please use Android Device Monitor (tools/monitor) instead.
注意:若出現mkdir failed for img Read-only file system,在執行 adb shell 命令後執行mount -o remount ,rw /即可
另外要配置能讀存儲卡:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"> </uses-permission>
生成調用關系圖:
dmtracedump -g output.png YourAppName.trace
調用關系圖實例:
另外,trace文件用Android Studio的Android Device Monitor打開。
dmtracedump能根據trace log生成調用棧圖。該工具使用的Graphviz工具來創建圖形輸出。 每個節點的含義:<ref> callname (<inc-ms>, <exc-ms>,<numcalls>)。
dmtracedump的使用方法:
dmtracedump [-ho] [-s sortable] [-d trace-base-name] [-g outfile] <trace-base-name>
工具加載<trace-base-name>.data和
<trace-base-name>.key。
參數
描述
-d <trace-base-name>
URL base to the location of the sortable javascript file
-g <outfile>
Generate output to <outfile>
-h
Turn on HTML output
-o
Dump the trace file instead of profiling
-t <percent>
Minimum threshold for including child nodes in the graph (child's inclusive time as a percentage of parent inclusive time). If this option is not used, the default threshold is 20%.
最低門檻,包括子節點圖中(孩子接點的包容性的時間占母接點包容性的時間)。如果不使用此選項,默認阈值是20%。
其他可以參考的資料:http://www.open-open.com/lib/view/open1430892721648.html。
Android 在C代碼中調用logcat,androidlogcat本文給《Android java傳遞int類型數組給C》中添加C代碼中調用logcat的功能 And
Android 主頁面頂部欄的通知Notification ,可以自定義通知消息欄的風格,並且點擊通知欄進人本程序。,android自定義消息欄常用的程序通知,顯示到主頁
我的android學習經歷15,android學習經歷15利用Intent實現有返回結果的頁面跳轉 主要用的方法: (1)Intent的構造方法:intent(當前界面對
【React Native開發】React Native控件之ToolbarAndroid工具欄控件講解以及使用(15) (一)前言 今天我們一起來看一下工具欄控件T