Android性能調(diào)試工具

想開發(fā)一款高質(zhì)量的Android應(yīng)用棺妓,就不得不關(guān)注性能問(wèn)題蔬咬,本文介紹Android主要的性能指標(biāo)半醉,和性能優(yōu)化中用到的工具涂屁。
性能指標(biāo)主要有:

  • 啟動(dòng)時(shí)間
  • CPU:
  • 耗電量:耗電量大會(huì)導(dǎo)致機(jī)器發(fā)熱、縮短機(jī)器的有效使用時(shí)長(zhǎng)
  • 內(nèi)存:
    內(nèi)存泄露:不使用的內(nèi)存空間一直被引用著沒(méi)有得到釋放甘穿。
    內(nèi)存抖動(dòng):短時(shí)間內(nèi)大量創(chuàng)建對(duì)象又在短時(shí)間內(nèi)頻繁觸發(fā)GC導(dǎo)致內(nèi)存波動(dòng)很大腮恩,會(huì)影響幀率,導(dǎo)致頁(yè)面卡頓温兼。
    內(nèi)存溢出:內(nèi)存泄漏到一定程度超出系統(tǒng)給進(jìn)程分配的內(nèi)存大小就會(huì)造成內(nèi)存溢出秸滴,程序崩潰
  • ?募判?布局復(fù)雜度:布局復(fù)雜度會(huì)導(dǎo)致布局需要更長(zhǎng)的時(shí)間荡含,從而導(dǎo)致進(jìn)入應(yīng)用慢、頁(yè)面切換慢届垫。
  • 網(wǎng)絡(luò):頻繁的網(wǎng)絡(luò)訪問(wèn)會(huì)導(dǎo)致耗電和影響應(yīng)用的性能释液,網(wǎng)絡(luò)交互數(shù)據(jù)大小會(huì)影響網(wǎng)絡(luò)傳輸?shù)男?/li>

本文介紹一些調(diào)試的工具。

1. Android手機(jī)自帶調(diào)試工具(在開發(fā)者選項(xiàng)里面)

1) Show GPU Overdraw(調(diào)試GPU過(guò)度繪制)

Overdraw(過(guò)度繪制)描述的是屏幕上的某個(gè)像素在同一幀的時(shí)間內(nèi)被繪制了多次装处。在多層次的UI結(jié)構(gòu)里面误债,如果不可見的UI也在做繪制的操作,這就會(huì)導(dǎo)致某些像素區(qū)域被繪制了多次妄迁。這就浪費(fèi)大量的CPU以及GPU資源寝蹈。


overdraw_options_view.png

藍(lán)色,淡綠登淘,淡紅箫老,深紅代表了4種不同程度的Overdraw情況,我們的目標(biāo)就是盡量減少紅色Overdraw形帮,看到更多的藍(lán)色區(qū)域槽惫。

  1. Profile GPU Rendering(GPU呈現(xiàn)模式分析)
    打開“開發(fā)者選項(xiàng)”周叮,找到“GPU呈現(xiàn)模式分析”,選擇“在主屏幕上顯示為條形圖”界斜,打開我們的應(yīng)用仿耽,在頁(yè)面底部可以看到垂直的柱形圖,柱形圖越高表示花費(fèi)的渲染時(shí)間越長(zhǎng)各薇。中間有一條綠色的橫線表示16ms项贺,我們要確保每一幀花費(fèi)的總時(shí)間都低于這條線,才能避免出現(xiàn)卡頓峭判。

每一條柱形圖包含三部分开缎,藍(lán)色表示測(cè)量繪制Display List的時(shí)間,紅色表示OpenGL渲染Display List需要的時(shí)間林螃,黃色表示CPU等待GPU處理的時(shí)間奕删。


tools_gpu_profile_rendering_graphic_activity.png
tools_gpu_profile_three_color.png
  1. Show GPU view updates(顯示GPU視圖更新)
    當(dāng)view中的繪制內(nèi)容發(fā)生變化時(shí),會(huì)重新執(zhí)行創(chuàng)建疗认、渲染完残、更新到屏幕等一系列操作。
    當(dāng)GPU正在繪圖時(shí)横漏,閃爍顯示窗口中的視圖谨设。使用GPU繪制的區(qū)域會(huì)用紅色標(biāo)注,沒(méi)有紅色標(biāo)注的區(qū)域缎浇,是CPU繪制的扎拣。
    從Android 3.0(API level 11)開始,Android的2D顯示管道被設(shè)計(jì)得更加支持硬件加速了素跺,硬件加速使GPU承擔(dān)了所有在View的canvas上執(zhí)行的繪制操作二蓝。
    Android硬件加速原理與實(shí)現(xiàn)簡(jiǎn)介
  2. Strict Mode(嚴(yán)格模式)
    Android應(yīng)用的主線程是UI線程,不應(yīng)該在UI線程里做耗時(shí)操作指厌。開啟“嚴(yán)格模式”侣夷,當(dāng)應(yīng)用在主線程做耗時(shí)操作時(shí),屏幕會(huì)閃爍來(lái)提醒仑乌。
  1. Android SDK提供的工具
  1. Hierarchy viewer
    層級(jí)顯示工具,可以用來(lái)查看界面布局結(jié)構(gòu)琴锭,找到復(fù)雜和嵌套過(guò)深的層級(jí)晰甚。
    有兩種方法可以打開Hierarchy viewer
    a. 打開sdk目錄下的tools文件夾,找到“Hierarchy viewer.bat”文件决帖,雙擊啟動(dòng)厕九。
    b. 在Android Studio,打開Tools > Android > Android device Monitor地回,找到


    QQ截圖20170216110301.png

    扁远,點(diǎn)擊左邊的圖標(biāo)俊鱼,選擇Hierarchy viewer。

找到當(dāng)前Activity的節(jié)點(diǎn)畅买,點(diǎn)擊Load View Hierarchy并闲。

  1. Android Studio插件
    說(shuō)一說(shuō)Android Studio和IDEA中一個(gè)很有用的內(nèi)存調(diào)試插件

  2. 第三方軟件
    GT(隨身調(diào))
    可對(duì)APP進(jìn)行快速的性能測(cè)試(CPU、內(nèi)存谷羞、流量帝火、電量、幀率/流暢度等等)湃缎、開發(fā)日志的查看犀填、Crash日志查看、網(wǎng)絡(luò)數(shù)據(jù)包的抓取嗓违、APP內(nèi)部參數(shù)的調(diào)試九巡、真機(jī)代碼耗時(shí)統(tǒng)計(jì)等。
    http://gt.qq.com/

  1. Leakcanary
  2. blockcanary
  3. stetho 可以在Chrome developer Tools下查看APP布局蹂季、網(wǎng)絡(luò)請(qǐng)求冕广、查看APP本地?cái)?shù)據(jù)庫(kù)、查看SharedPreference文件乏盐,這些都是可視化的佳窑。
    http://facebook.github.io/stetho/
    用法:http://stormzhang.com/android/2015/03/05/android-debug-use-chrome/
    3)BugTags
    https://bugtags.com/
    可以方便上報(bào)日志,但是要查看實(shí)時(shí)日志的話父能,需要?jiǎng)?chuàng)建公司賬戶神凑。
  1. 其它
    Android開發(fā)工具

個(gè)人技術(shù)水平有限,如有理解錯(cuò)誤還請(qǐng)指正 :)
擴(kuò)展閱讀:
Android性能優(yōu)化典范 - 第1季
Android性能優(yōu)化----工具篇
安卓性能優(yōu)化

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末何吝,一起剝皮案震驚了整個(gè)濱河市溉委,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌爱榕,老刑警劉巖瓣喊,帶你破解...
    沈念sama閱讀 218,640評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異黔酥,居然都是意外死亡藻三,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,254評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門跪者,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)棵帽,“玉大人,你說(shuō)我怎么就攤上這事渣玲《焊牛” “怎么了?”我有些...
    開封第一講書人閱讀 165,011評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵忘衍,是天一觀的道長(zhǎng)逾苫。 經(jīng)常有香客問(wèn)我卿城,道長(zhǎng),這世上最難降的妖魔是什么铅搓? 我笑而不...
    開封第一講書人閱讀 58,755評(píng)論 1 294
  • 正文 為了忘掉前任瑟押,我火速辦了婚禮,結(jié)果婚禮上狸吞,老公的妹妹穿的比我還像新娘勉耀。我一直安慰自己,他們只是感情好蹋偏,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,774評(píng)論 6 392
  • 文/花漫 我一把揭開白布便斥。 她就那樣靜靜地躺著,像睡著了一般威始。 火紅的嫁衣襯著肌膚如雪枢纠。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,610評(píng)論 1 305
  • 那天黎棠,我揣著相機(jī)與錄音晋渺,去河邊找鬼。 笑死脓斩,一個(gè)胖子當(dāng)著我的面吹牛木西,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播随静,決...
    沈念sama閱讀 40,352評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼八千,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了燎猛?” 一聲冷哼從身側(cè)響起恋捆,我...
    開封第一講書人閱讀 39,257評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎重绷,沒(méi)想到半個(gè)月后沸停,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,717評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡昭卓,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,894評(píng)論 3 336
  • 正文 我和宋清朗相戀三年愤钾,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片候醒。...
    茶點(diǎn)故事閱讀 40,021評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡绰垂,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出火焰,到底是詐尸還是另有隱情,我是刑警寧澤胧沫,帶...
    沈念sama閱讀 35,735評(píng)論 5 346
  • 正文 年R本政府宣布昌简,位于F島的核電站占业,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏纯赎。R本人自食惡果不足惜谦疾,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,354評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望犬金。 院中可真熱鬧念恍,春花似錦、人聲如沸晚顷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,936評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)该默。三九已至瞳氓,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間栓袖,已是汗流浹背匣摘。 一陣腳步聲響...
    開封第一講書人閱讀 33,054評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留裹刮,地道東北人音榜。 一個(gè)月前我還...
    沈念sama閱讀 48,224評(píng)論 3 371
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像捧弃,于是被迫代替她去往敵國(guó)和親赠叼。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,974評(píng)論 2 355

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