國內用traceview的人多嗎?這個工具這麼強大,實際用到他一般是幹什麼?

traceview功能太強大了,但真正會用的人很少,網上百度的貼子又好簡單的描述,請大牛給出解釋,或者給出鏈接。


別人用不用我不知道。

先明確為什麼用,TraceView能讓你知道時間花在哪裡了,有沒有東西卡UI。自然Google官方的文檔是起點 http://developer.android.com/tools/debugging/debugging-tracing.html

不好用,因為很麻煩,需要dump數據,需要用DDMS。

最新的Android Studio引入了對Traceview的支持,使得整個工作流程變得十分方便,感覺時不時來trace一下也是個學習的契機。

首先編譯你的程序,打開Android Studio裡面的Android Monitor,找到下圖的按鈕

2016/11/22 根據Android Studio v2.2.2 更換了截圖

然後在app裡面干你想trace的部分,開個頁面什麼的

然後點同樣的按鈕完成tracing,接下來Android Studio會自動生成一個圖表,比DDMS裡面的版本好用太多!!

X軸代表時間,Y軸代表方法調用的堆棧,假設我們想找出來什麼東西阻塞了UI,那就定位佔用時間的方法,假設使用的時間超過100ms,app自然卡啊!

我們來zoom in看一記

整個view的調用過程一目了然,小夥伴如果在主線程上調用了資料庫讀寫,難道還發現不了么

比如,我們最近嘗試了Vector Drawable,但是打開Profile GPU Rendering之後總是能發現掉幀,所以就鑽進來看,發現Vector Drawable果然很複雜,和官方說的一樣,在複雜的大圖上效率不高

-------------廣告的分界線------------------

Garena 新加坡HQ 期待優秀軟體工程師的加入 :-) 有意請私信,可以不在乎新加坡個位數的PM2.5,可以不在乎Herman Miller上千美刀的椅子,總在乎工作機是啥吧


當然有人用,看看這篇文章Android 編程下的 TraceView 簡介及其案例實戰,講的很詳細。這個東西使用起來有技巧,可能會出現找不到你的調研棧。


traceview其實可以做的事情很多,主要是可以拿到堆棧,用來定位方法耗時。

我開源了一個工具:alexknight/TraceAnalysis

主要用於啟動時間的問題定位上,單獨使用可以將trace文件解析成json,也可以用來對比trace文件之間的方法耗時。文章介紹放在:利用 Traceview 精準定位啟動時間測試的異常方法 (工具開源)


你會被人說又用百度的,一般這種工具使用我會先看官網,搜搜英文版Google,或者結合你要使用的功能搜搜,搜搜中文的。。。眼光不要只局限國內,中文就可以了


推薦閱讀:

TAG:Android開發 | 性能 | Android |