android性能跟蹤分析工具系列 - TraceView

37624124_1408459493746.jpg

文集目錄

ps:喜歡的點(diǎn)贊哦 android性能跟蹤分析工具系列 - 目錄


話說前2篇都是介紹查看app 每幀的渲染,根據(jù)不同任務(wù)耗時離來查找問題身冀,那么我們現(xiàn)在可以發(fā)現(xiàn) app 卡頓是由哪個任務(wù)區(qū)域造成的,然后呢我們興致勃勃的去查看代碼珍促,一看尼瑪這么多方法了,具體是哪幾個方法造成的呢猪叙,還是別的原因仁卷? 怎么辦現(xiàn)在卡在這里了,哈哈锦积,沒關(guān)系,現(xiàn)在我來介紹神器 TraceView丰介,這個工具可以查看方法的具體耗時和資源消耗。哈哈是不是感覺順下來了带膀,我寫文章都是按著解決問題的順序?qū)懙摹?/p>

先來看看這個 TraceView 長啥樣:


Snip20170915_27.png

如何使用TraceView

  • 代碼方式:
    首先選擇跟蹤范圍橙垢,在想要根據(jù)的代碼片段之間使用以下兩句代碼
  Debug.startMethodTracing(“hello”);
  .......
  Debug.stopMethodTracing();

生成的traceview文件會自動放在SDCARD上,沒有SDCARD卡會出現(xiàn)異常点额,所以使用這種方式需要確保應(yīng)用的AndroidMainfest.xml中的SD卡的讀寫權(quán)限是打開的舔株,其中hello是traceview文件的名字载慈,是然后用adb導(dǎo)出traceview文件。

adb pull sdcard/hello.trace    C:\Users\wangjing\Desktop

然后啟動Android Device Monitor-->File-->openFile,打開traceview文件即可办铡。

  • 可視化操作方式

打開 Android devices trace 琳要,之前介紹過了


Snip20170915_30.png

然后點(diǎn)這里,開始計(jì)時童叠,TraceView 工具也是根據(jù)時間段來分析的


Snip20170915_31.png

我們就可以開始我們的操作了课幕,完事后我們還是按這個鍵,結(jié)束采集乍惊,最后就會生成一張分析圖表了


如何使用

做一個測試大家就知道怎么回事了,我在A 界面放一個按鈕润绎,啟動B 頁面,B 頁面的 onCreate 方法中進(jìn)行一個耗時操作呢蛤,這里我極端一點(diǎn),打印日志一百萬次

public class BActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_b);

        printmMethod();
    }

    private void printmMethod() {

        for (int i = 0; i < 1000000; i++) {
            Log.d("TrackView-", "test:" + (i + 1) + "次");
        }
        printmMethod2();
    }

    private void printmMethod2() {

        for (int i = 0; i < 200000; i++) {
            Log.d("TrackView-", "test:" + (i + 1) + "次");
        }
        Toast.makeText(this, "打印結(jié)束", Toast.LENGTH_SHORT).show();
    }

哈哈顾稀,我這寫的極端了坝撑,為了結(jié)果明顯一點(diǎn)粮揉,我們現(xiàn)在可以阻塞 UI 線程呢,界面的顯示之后在我們的阻塞任務(wù)之后才能顯示扶认,看 TraceView 獲取的數(shù)據(jù)圖


Snip20170915_27.png

可以看到上面的 main 線程里面一條常常的黑色,有顏色就表示有響應(yīng)的方法在跑狱从,因?yàn)槲覀冏枞氖?UI 線程膨蛮,所以這里我們看 main 線程就行啦

在下面的方法列表里敞葛,我們可以找找 B 頁面的 onCreate 方法,默認(rèn)是按右邊第一條數(shù)據(jù)的從大到小排列的惹谐,右邊的數(shù)據(jù)列表是可以拖拽的,按我們自己的喜好來

Snip20170915_32.png

點(diǎn)擊 onCreate 方法我們可以看到內(nèi)部的實(shí)現(xiàn)


Snip20170915_33.png
  • parents 是 onCreate 方法的上一級氨肌,就是誰調(diào)用了 onCreate 方法
  • children 是 onCreate 方法內(nèi)部調(diào)用的子方法怎囚,一般我們都是看這里的。

好了桩了,重點(diǎn)就是看看右邊的右邊的數(shù)據(jù)列表都能顯示什么數(shù)據(jù),我先解析一下幾個字段:

  • incl :
    數(shù)據(jù) = 該方法自身 + 該方法的所有子方法
  • excl:
    數(shù)據(jù) = 該方法自身井誉, 注意不包含該方法的所有子方法
  • cpu time:
    是該方法耗費(fèi)的CPU 時間
  • Real time:
    是該方法耗費(fèi)的實(shí)際時間整胃,Real time > cpu time,因?yàn)?cpu 的特性屁使,cpu 在一個計(jì)算時間段內(nèi)是在不停輪流執(zhí)行并發(fā)任務(wù)的。

知道了這幾個字段就好辦了蛮寂,下面是所有數(shù)據(jù)的含義解釋:


一般我們都是看方法占用的實(shí)際時間和次數(shù),注意點(diǎn)擊行用的數(shù)據(jù)字段是能夠排序的哦及老。

結(jié)合上面的例子,我們可以看到 onCreate 自身沒有耗費(fèi)時間骄恶,都是里面我們打印的方法在耗費(fèi)時間匕垫,也就是卡頓的元兇。這里我們一般都是做延遲加載,在頁面顯示出來之后再執(zhí)行打印方法

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_b);
        getWindow().getDecorView().post(new Runnable() {
            @Override
            public void run() {
                printmMethod();
            }
        });
    }

ps:TraceView 工具一般也就是這么用斟叼,有 NB 人使用代碼方式的,這樣范圍更精準(zhǔn)犁柜,尤其適合裝逼用,哈哈馋缅。


參考資料:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末绢淀,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子覆履,更是在濱河造成了極大的恐慌,老刑警劉巖硝全,帶你破解...
    沈念sama閱讀 206,602評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件楞抡,死亡現(xiàn)場離奇詭異,居然都是意外死亡召廷,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評論 2 382
  • 文/潘曉璐 我一進(jìn)店門先紫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人遮精,你說我怎么就攤上這事”境澹” “怎么了?”我有些...
    開封第一講書人閱讀 152,878評論 0 344
  • 文/不壞的土叔 我叫張陵眼俊,是天一觀的道長粟关。 經(jīng)常有香客問我,道長闷板,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,306評論 1 279
  • 正文 為了忘掉前任性昭,我火速辦了婚禮,結(jié)果婚禮上糜颠,老公的妹妹穿的比我還像新娘。我一直安慰自己其兴,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,330評論 5 373
  • 文/花漫 我一把揭開白布元旬。 她就那樣靜靜地躺著守问,像睡著了一般。 火紅的嫁衣襯著肌膚如雪耗帕。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,071評論 1 285
  • 那天仿便,我揣著相機(jī)與錄音,去河邊找鬼探越。 笑死,一個胖子當(dāng)著我的面吹牛钦幔,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播鲤氢,決...
    沈念sama閱讀 38,382評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼哨颂!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起威恼,我...
    開封第一講書人閱讀 37,006評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎箫措,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體斤蔓,經(jīng)...
    沈念sama閱讀 43,512評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,965評論 2 325
  • 正文 我和宋清朗相戀三年友驮,在試婚紗的時候發(fā)現(xiàn)自己被綠了驾锰。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,094評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡稻据,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出捻悯,到底是詐尸還是另有隱情,我是刑警寧澤今缚,帶...
    沈念sama閱讀 33,732評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站姓言,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏何荚。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,283評論 3 307
  • 文/蒙蒙 一妥衣、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧戒傻,春花似錦、人聲如沸需纳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽麻裳。三九已至周霉,卻和暖如春亚皂,著一層夾襖步出監(jiān)牢的瞬間俱箱,已是汗流浹背灭必。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留跟衅,地道東北人。 一個月前我還...
    沈念sama閱讀 45,536評論 2 354
  • 正文 我出身青樓伶跷,卻偏偏與公主長得像,于是被迫代替她去往敵國和親秘狞。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,828評論 2 345

推薦閱讀更多精彩內(nèi)容