Android性能調優(yōu)篇之Hierarchy Viewer工具的使用

開篇廢話

我們平時在做UI布局優(yōu)化的時候褥影,時常提起的一個工具Hierarchy Viewer,它提供了一個很直觀的可視化界面來觀測布局界面的層級泛烙,可以檢查布局層次結構中每個視圖的屬性和布局速度檬果。它可以幫助我們查找由視圖層次結構導致的性能瓶頸浅缸,從而幫助我們簡化層次結構并減少過度繪制(Overdraw)的問題
歡迎訪問我的個人博客:senduo's blog


技術詳情

我們從以下幾個步驟來講述Hierarchy Viewer工具的使用:

第一步:開啟Hierarchy View的工作界面
第二步:檢測移動設備(虛擬機)的View Server是否開啟
第三步:移動設備開啟某個需要檢測的界面软吐,Hierarchy View 加載該界面視圖
第四步:工具熟悉

第一步:開啟Hierarchy Viewer的工作界面

針對Android Studio 2.x版本系列:

在Android Stduio的菜單欄依次點擊:

Tools>Android>Android Device Monitor
image
image

點擊后现喳,稍等一會會彈出一個界面:

image
image

選擇Hierarchy View之后呛梆,我們就能看到Hierarchy View工具的工作界面了:


image
image

第二步:檢測移動設備(虛擬機)的View Server是否開啟

當移動設備正確連接PC之后锐涯,使用adb指令在命令行里面輸入:

adb shell service call window 3

如果提示adb不是內部指令的話,記得進行配置環(huán)境變量填物,將platform-tools里面的adb.exe路徑配置到Path中去(Windows環(huán)境纹腌,其他系統的類似)

執(zhí)行后

image
image
若返回值是:Result: Parcel(00000000 00000000 '........') 說明View Server處于關閉狀態(tài)霎终。

若返回值是:Result: Parcel(00000000 00000001 '........') 說明View Server處于開啟狀態(tài)。

如果是一臺可以打開View Service Android設備(Android開發(fā)版手機升薯,模擬器,注意版本要在Android4.1及以上哈)可以用以下命令操作View Server

打開View Server命令:
adb shell service call window 1 i32 4939
關閉View Server命令:
adb shell service call window 2 i32 4939
image
image

第三步:移動設備開啟某個需要檢測的界面莱褒,Hierarchy View 加載該界面視圖

當命令行顯示了Result: Parcel(00000000 00000001 '........'),重新打開一下Android Device Monitor,然后點擊Load view按鈕,就能加載界面的一個視圖了:

image
image

如果點擊加載視圖按鈕沒有看到右邊的圖的話涎劈,把Android Device Monitor整個界面先關掉广凸,然后將View Server先關閉,再查看是否關閉蛛枚,沒有關閉谅海,就多運行幾次關閉指令

關閉View Server命令:
adb shell service call window 2 i32 4939

然后運行開啟View Server,知道開啟了View Server,再重新打開Android Device Monitor,依然不行,就重復多次蹦浦,如果三四次之后還是不行扭吁,那問題就另當別論了哈

第四步:工具熟悉

Tree View(中心):顯示視圖層次結構。您可以使用鼠標拖動并放大盲镶,底部的縮放控件侥袜。每個節(jié)點表示它的View類名和ID名稱。
Tree Overview(右上):為您的應用程序的完整視圖層次結構提供鳥瞰圖溉贿。移動灰色矩形以更改樹視圖中可見的視口枫吧。
Layout View(右下角):顯示布局的線框視圖。當前所選視圖的輪廓為紅色顽照,其父視圖為淺紅色。

三個小圓點, 依次表示Measure, Layout, Draw, 可以理解為對應View的onMeasure, onLayout, onDraw三個方法闽寡。

綠色, 表示該View的此項性能比該View Tree中超過50%的View都要快代兵。
黃色, 表示該View的此項性能比該View Tree中超過50%的View都要慢。
紅色, 表示該View的此項性能是View Tree中最慢的

界面中出現的紅色圈圈多了爷狈,我們就要注意了:

Measure紅點, 可能是布局中嵌套RelativeLayout, 或是嵌套LinearLayout都使用了weight屬性
Layout紅點, 可能是布局層級太深植影。
Draw紅點, 可能是自定義View的繪制有問題, 復雜計算等。

干貨總結

這篇文章是為了下一篇的UI布局優(yōu)化做的一個準備涎永,因為思币,在UI布局優(yōu)化中,這個工具一般是少不了的羡微,在我們實際生產中谷饿,也是非常有用的一個工具,所以妈倔,我們需要好好了解這個工具博投。

本篇內容使用的環(huán)境為Windows7 + Android Studio + Genymotion虛擬機 2.3.3,所以如果用Eclipse的小伙伴有點不適用這個,不過盯蝴,原理差不多毅哗,adb指令也是一樣听怕,具體得自身去嘗試了,畢竟Android Studio工具是google推薦的虑绵,屬于正宮娘娘

此篇中暫時沒有提及真機版移動設備使用Hierarchy View 這個工具尿瞭,因為google處于安全層面的考慮,真機無法開啟View Server這個服務翅睛,不過還是有方法可以使用声搁,只是稍微麻煩一點,我這里就不進行贅述了宏所。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末酥艳,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子爬骤,更是在濱河造成了極大的恐慌充石,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,820評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件霞玄,死亡現場離奇詭異骤铃,居然都是意外死亡,警方通過查閱死者的電腦和手機坷剧,發(fā)現死者居然都...
    沈念sama閱讀 94,648評論 3 399
  • 文/潘曉璐 我一進店門惰爬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人惫企,你說我怎么就攤上這事撕瞧。” “怎么了狞尔?”我有些...
    開封第一講書人閱讀 168,324評論 0 360
  • 文/不壞的土叔 我叫張陵丛版,是天一觀的道長。 經常有香客問我偏序,道長页畦,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,714評論 1 297
  • 正文 為了忘掉前任研儒,我火速辦了婚禮豫缨,結果婚禮上,老公的妹妹穿的比我還像新娘端朵。我一直安慰自己好芭,他們只是感情好,可當我...
    茶點故事閱讀 68,724評論 6 397
  • 文/花漫 我一把揭開白布冲呢。 她就那樣靜靜地躺著栓撞,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上瓤湘,一...
    開封第一講書人閱讀 52,328評論 1 310
  • 那天瓢颅,我揣著相機與錄音,去河邊找鬼弛说。 笑死挽懦,一個胖子當著我的面吹牛,可吹牛的內容都是我干的木人。 我是一名探鬼主播信柿,決...
    沈念sama閱讀 40,897評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼醒第!你這毒婦竟也來了渔嚷?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,804評論 0 276
  • 序言:老撾萬榮一對情侶失蹤稠曼,失蹤者是張志新(化名)和其女友劉穎形病,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體霞幅,經...
    沈念sama閱讀 46,345評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡漠吻,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,431評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了司恳。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片途乃。...
    茶點故事閱讀 40,561評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖扔傅,靈堂內的尸體忽然破棺而出耍共,到底是詐尸還是另有隱情,我是刑警寧澤猎塞,帶...
    沈念sama閱讀 36,238評論 5 350
  • 正文 年R本政府宣布试读,位于F島的核電站,受9級特大地震影響邢享,放射性物質發(fā)生泄漏鹏往。R本人自食惡果不足惜淡诗,卻給世界環(huán)境...
    茶點故事閱讀 41,928評論 3 334
  • 文/蒙蒙 一骇塘、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧韩容,春花似錦款违、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春赠尾,著一層夾襖步出監(jiān)牢的瞬間力穗,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評論 1 272
  • 我被黑心中介騙來泰國打工气嫁, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留当窗,地道東北人。 一個月前我還...
    沈念sama閱讀 48,983評論 3 376
  • 正文 我出身青樓寸宵,卻偏偏與公主長得像崖面,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子梯影,可洞房花燭夜當晚...
    茶點故事閱讀 45,573評論 2 359

推薦閱讀更多精彩內容