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

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

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

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

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

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

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


overdraw_options_view.png

藍色,淡綠,淡紅,深紅代表了4種不同程度的Overdraw情況,我們的目標就是盡量減少紅色Overdraw,看到更多的藍色區(qū)域。

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

每一條柱形圖包含三部分,藍色表示測量繪制Display List的時間,紅色表示OpenGL渲染Display List需要的時間,黃色表示CPU等待GPU處理的時間。


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


    QQ截圖20170216110301.png

    ,點擊左邊的圖標,選擇Hierarchy viewer。

找到當前Activity的節(jié)點,點擊Load View Hierarchy。

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

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

  1. Leakcanary
  2. blockcanary
  3. stetho 可以在Chrome developer Tools下查看APP布局、網(wǎng)絡(luò)請求、查看APP本地數(shù)據(jù)庫、查看SharedPreference文件,這些都是可視化的。
    http://facebook.github.io/stetho/
    用法:http://stormzhang.com/android/2015/03/05/android-debug-use-chrome/
    3)BugTags
    https://bugtags.com/
    可以方便上報日志,但是要查看實時日志的話,需要創(chuàng)建公司賬戶。
  1. 其它
    Android開發(fā)工具

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容