工具推薦
UI檢測(cè)的工具,Hierarchy Viewer和Layout Inspector。
雖然Hierarchy Viewer已經(jīng)廢棄了买羞,但感覺(jué)還是有必要介紹一下的。
Hierarchy Viewer
工具打開(kāi)方式
AS版本:3.3.2 打開(kāi)方式:
- 本地安裝SDK目錄->sdk->tools->monitor.bat
老版的AS打開(kāi)方式:
- 本地安裝SDK目錄->sdk->tools->hierarchyviewer.bat
- Android Studio : 工具欄->Tools->Android->Android Device Monitor
- 在命令行輸入 hierarchyviewer
工具的使用
設(shè)備連接(真機(jī)需要手機(jī)root權(quán)限)
成功后左側(cè)Windows小手機(jī)會(huì)看到設(shè)備信息
打開(kāi)Hierarchy View
點(diǎn)擊Window->Open Perspective->Hierarchy View
若期間出現(xiàn)此問(wèn)題
選擇使用本地IP,并關(guān)閉筋帖,重新啟動(dòng)即可
此時(shí),應(yīng)該會(huì)看到如下圖了:
- Tree View:顯示視圖層次結(jié)構(gòu)的樹(shù)視圖冤馏。 可以使用鼠標(biāo)拖動(dòng)并放大樹(shù)底部的縮放控件
- Tree Overview:為應(yīng)用程序的完整視圖層次結(jié)構(gòu)提供鳥(niǎo)瞰圖日麸。 移動(dòng)灰色矩形以更改樹(shù)視圖中可見(jiàn)的視口。
- Layout View:顯示布局的線框視圖。 當(dāng)前所選視圖的輪廓為紅色代箭,其父視圖為淺紅色墩划。單擊此處的視圖也會(huì)在樹(shù)視圖中選擇它,反之亦然嗡综。
- hierarchy view 視圖層次結(jié)構(gòu)是布局的快照乙帮,因此不會(huì)自動(dòng)更新。 要更新層次結(jié)構(gòu)視圖极景,點(diǎn)擊右上角藍(lán)色金字塔(Reload the view hierarchy)察净。
- 要想保存Tree View,點(diǎn)擊右上角藍(lán)色金字塔左邊小文檔,左邊是PNG格式,右邊是PS的PSD格式。
獲取布局的繪制
- 選擇一個(gè)節(jié)點(diǎn)盼樟,點(diǎn)擊Profile Mode按鈕,可以獲取到布局繪制的時(shí)間氢卡,如圖:
- 綠:表示該View的此項(xiàng)性能比該View Tree中超過(guò)50%的View都要快;例如,一個(gè)綠點(diǎn)的測(cè)量時(shí)間意味著這個(gè)視圖的測(cè)量時(shí)間快于樹(shù)中的視圖對(duì)象的50%晨缴。
- 黃: 表示該View的此項(xiàng)性能比該View Tree中超過(guò)50%的View都要慢译秦;例如,一個(gè)黃點(diǎn)布局意味著這種觀點(diǎn)有較慢的布局時(shí)間超過(guò)50%的樹(shù)視圖對(duì)象。
- 紅: 表示該View的此項(xiàng)性能是View Tree中最慢的击碗;例如,一個(gè)紅點(diǎn)的繪制時(shí)間意味著花費(fèi)時(shí)間最多的這一觀點(diǎn)在樹(shù)上畫(huà)所有的視圖對(duì)象筑悴。
布局性能分析
紅色節(jié)點(diǎn)是代表應(yīng)用性能慢的一個(gè)潛在問(wèn)題,下面是幾個(gè)例子稍途,如何來(lái)分析和解釋紅點(diǎn)的出現(xiàn)原因阁吝?
- 如果在葉節(jié)點(diǎn)或者ViewGroup中,只有極少的子節(jié)點(diǎn)晰房,這可能反映出一個(gè)問(wèn)題求摇,應(yīng)用可能在設(shè)備上運(yùn)行并不慢,但是你需要指導(dǎo)為什么這個(gè)節(jié)點(diǎn)是紅色的殊者,可以借助Systrace或者Traceview工具与境,獲取更多額外的信息;
- 如果一個(gè)視圖組里面有許多的子節(jié)點(diǎn)猖吴,并且測(cè)量階段呈現(xiàn)為紅色摔刁,則需要觀察下子節(jié)點(diǎn)的繪制情況;
- 如果視圖層級(jí)結(jié)構(gòu)中的根視圖海蔽,Messure階段為紅色共屈,Layout階段為紅色,Draw階段為黃色党窜,這個(gè)是比較常見(jiàn)的拗引,因?yàn)檫@個(gè)節(jié)點(diǎn)是所有其它視圖的父類;
- 如果視圖結(jié)構(gòu)中的一個(gè)葉子節(jié)點(diǎn)幌衣,有20個(gè)視圖是紅色的Draw階段矾削,這是有問(wèn)題的壤玫,需要檢查代碼里面的onDraw方法,不應(yīng)該在那里調(diào)用哼凯。
Layout Inspector
工具打開(kāi)方式
- 在連接的設(shè)備或模擬器上運(yùn)行應(yīng)用欲间;
- 點(diǎn)擊 Tools > Android > Layout Inspector;
-
在出現(xiàn)的 Choose Process 對(duì)話框中断部,選擇想要檢查的應(yīng)用進(jìn)程猎贴,然后點(diǎn)擊 OK
工具的使用
布局檢查器會(huì)捕獲快照,將它保存為 .li 文件并打開(kāi)蝴光。如圖所示她渴,布局檢查器將顯示以下內(nèi)容:
- View Tree:視圖在布局中的層次結(jié)構(gòu)。
- Screenshot:帶每個(gè)視圖可視邊界的設(shè)備屏幕截圖蔑祟。
-
Properties Table:選定視圖的布局屬性惹骂。
如果布局包括重疊視圖,則默認(rèn)情況下做瞪,只有前面的視圖可以在屏幕截圖中點(diǎn)擊。 要讓后面的視圖可以在屏幕截圖中點(diǎn)擊右冻,請(qǐng)執(zhí)行以下操作:
在 View Tree 中右鍵點(diǎn)擊前面的視圖装蓬,然后取消選中 Show in preview。 此操作不會(huì)讓視圖內(nèi)容消失纱扭;僅會(huì)讓屏幕截圖中的可點(diǎn)擊邊界消失牍帚,以便可以點(diǎn)擊在它后面的視圖。
如果設(shè)備上的布局發(fā)生變化乳蛾,布局檢查器不會(huì)更新暗赶。 必須再次點(diǎn)擊 Tools > Android > Layout Inspector,創(chuàng)建一個(gè)新的快照肃叶。每一個(gè)快照都將保存到 project-name/captures/ 內(nèi)一個(gè)單獨(dú)的 .li 文件中蹂随。
結(jié)論
Hierarchy Viewer雖然已經(jīng)廢棄了,但實(shí)際應(yīng)用中還是不能放棄的因惭,相比較而言岳锁,Layout Inspector看布局的層級(jí)較為輕松,但Hierarchy Viewer看布局的繪制時(shí)間更為輕松蹦魔,兩者相結(jié)合激率,對(duì)布局的檢測(cè)優(yōu)化更為輕松,所以自我感覺(jué)兩者都不能放棄勿决。
具體如何進(jìn)行優(yōu)化乒躺,以及一些優(yōu)化的建議,請(qǐng)聽(tīng)下回分解~