一氢伟、 使用場(chǎng)景
查看當(dāng)前整個(gè)系統(tǒng)的情況
二、使用工具DDMS
兩種打開(kāi)方式:
- 用chrome打開(kāi)trace.html即可短条。
- 在瀏覽器輸入
chrome://tracing/
恭朗, 選擇load
三哭尝、主要作用-使用Systrace 檢測(cè)卡頓丟幀問(wèn)題
如下Systrace報(bào)告列出了每個(gè)進(jìn)程呈現(xiàn)UI frame哥攘,并顯示沿著時(shí)間線(xiàn)的每個(gè)渲染幀。 在綠色
框架圓圈中材鹦,是指在16.6ms內(nèi)呈現(xiàn)每秒穩(wěn)定60幀逝淹。 花費(fèi)16.6ms以上渲染的幀用黃色或紅色
圓圈表示。
在運(yùn)行Android 5.0(API級(jí)別21)或更高版本的設(shè)備上桶唐, UI 渲染的工作主要由UI Thread和RenderThread兩個(gè)線(xiàn)程完成栅葡。 在之前的版本中,創(chuàng)建渲染框架的所有工作都是在UI Thread上完成的尤泽。
點(diǎn)擊一個(gè)F圓圈
欣簇,它可以提供系統(tǒng)為渲染該frame 完成所包含的工作信息,包括警報(bào)坯约,丟幀熊咽,建議等。
同時(shí)它還向您展示了在渲染該frame時(shí)系統(tǒng)正在執(zhí)行的方法闹丐,因此您可以調(diào)查這些方法是否導(dǎo)致UI jank横殴。
選擇黃色的frame后卿拴,您可能會(huì)在報(bào)告的底部窗格中看到如上提示信息衫仑。
上圖中顯示的Alert , 主要問(wèn)題是在ListView回收和重新bind中花費(fèi)了太多的時(shí)間堕花。 trace中有相關(guān)事件的鏈接文狱,點(diǎn)擊可以獲取更多關(guān)于系統(tǒng)在這段時(shí)間內(nèi)正在做什么的事情。
要查看Systrace中發(fā)現(xiàn)的每個(gè)Alert以及設(shè)備觸發(fā)Alert的次數(shù)航徙,請(qǐng)單擊窗口最右側(cè)的Alerts選項(xiàng)卡如贷,如下圖所示。
Alerts面板可幫助您查看發(fā)生了哪些問(wèn)題到踏,以及發(fā)生的頻率杠袱。 將Alert面板看作是要修復(fù)的錯(cuò)誤列表, 通常情況下窝稿,一個(gè)區(qū)域的微小變化或改進(jìn)就可以消除應(yīng)用程序中的全部Alert楣富。
如果你的代碼在UI Thread
上做太多的工作,你需要找出哪些方法消耗了太多的CPU時(shí)間伴榔。
一種方法是添加systrace
(請(qǐng)參閱檢測(cè)應(yīng)用代碼)到您認(rèn)為會(huì)導(dǎo)致這些卡頓或者導(dǎo)致慢的方法地方纹蝴,然后查看這些函數(shù)調(diào)用是否顯示在systrace中庄萎。 如果您不確定哪些方法可能會(huì)在UI線(xiàn)程上造成卡頓,請(qǐng)使用Android Studio的內(nèi)置CPU Profiler塘安,或者生成跟蹤日志并使用Traceview查看它們糠涛。
四、添加systrace代碼檢測(cè)
Trace.beginSection("MyAdapter.onCreateViewHolder");
Trace.endSection();
- begin end 要成對(duì)出現(xiàn)
- begin end 必要要出現(xiàn)在同一個(gè)線(xiàn)程
五. mac上 systrace的抓取方式
systrace.py 在/sdk/platform-tools/systrace
目錄下兼犯。
用Chrome查看 mytrace.xml忍捡。
這塊需要注意的是:超過(guò)10s,trace不一定能記錄的到
切黔。
./systrace.py -t 10 -o mytrace.html -a com.sankuai.meituan.takeoutnew sched freq idle am wm gfx view binder_driver hal dalvik camera input res
http://www.reibang.com/p/19b3245207e8
參考文章:
1.Android Systrace 使用詳解