上一篇:Android:應用開發進階必經之路之性能優化(上)php
Android Studio是谷歌官方提供的集成開發環境(後面簡稱AS),一樣做爲Android集成開發環境的Eclipse很好用,但AS更高效、順手、便捷,這在沒有使用AS以前是沒法感覺到的。AS不只提供了程序開發、構建、調試的環境,還提供了一系列優化應用質量的工具,這些工具包括靜態代碼檢測工具Inspect Code、Android Monitor、Analyze APK...,同時還集成了Android Device Monitor。經過這三個工具基本上能夠檢測、分析、定位大部分Android應用的性能問題。html
Inspect Code:android
AS中的Insepct Code是用於對代碼進行靜態質量分析的工具,它是lint的加強版,能夠檢測出來不少潛在的問題,同時給你提供改善建議;它不只能夠對整個工程、某個module、某個文件進行全部規則的代碼靜態質量檢測,還能夠針對某一項規則對整個工程進行檢測:git
在Inspection窗口的左側,有提供了一系列快捷按鈕用於快速分析、定位、修復代碼中的問題:github
打開Settings的Inspections選項,能夠看到這個工具可以檢測出不少關於Java和Android方面的性能問題,好比佈局致使的過渡繪製、在onDraw方法中建立新的實例、Handler內部類致使的潛在內存泄露、使用SparseArray代替HashMap的建議、佈局層次太深、TypedArrays和VelocityTrackers沒有調用recycle方法致使的內存泄露、存在沒有使用的資源文件、系統方法取代自定義實現功能代碼塊的建議、IO操做致使的內存泄露問題、String和StringBuilder的相互替換等等;隨着AS的不斷更新,這個功能在不斷完善,最新的AS版本中,不少代碼層面的問題都可以被檢測出來。web
經過這個工具能夠刪掉無用資源,檢測出明顯的性能問題,以及對代碼可讀性和性能方面的建議,使用起來很簡單,建議天天做爲平常,提交代碼前都檢測一次,這比在持續集成過程當中,使用sonar等代碼質量工具分析更方便。正則表達式
更多關於Inspect Code的描述參見:緩存
(1)Inspection Tool Window性能優化
(2)Android Studio提升代碼質量必殺技:Inspact Code網絡
Android Monitor:
Andorid Monitor提供了一系列的性能檢測工具,經過它能夠幫助你剖析應用的性能,以便優化、調試和改善應用各方面的性能問題;Android Monitor能夠從以下幾個方面對真機/模擬器中正在運行的程序進行性能監控:
(1)Log日誌,包括系統日誌和自定義日誌;
(2)實時監控內存、CPU、GPU的使用狀況;
(3)實時監控網絡流量的消耗(只適合於真機);
(4)採集運行時信息並保存爲文件,供工具分析;
LogCat日誌窗口:
經過Logcat日誌窗口能夠查看系統事件以及程序自定義的日誌信息,好比GC消息、程序運行時異常日誌、當前啓動應用的包名及入口等;它不只提供了實時查看設備日誌信息的功能,還有一段時間的日誌緩存;同時提供了按照搜索(支持正則表達式)、按照等級/自定義標籤/指定包名篩選日誌的功能,以幫助你快速定位問題。
Logcat窗口是以行爲單位對日誌進行緩存,當窗口中的緩存日誌超過指定的行數上限時,會刪掉最早緩存的日誌。若是你以爲窗口中的日誌緩存清除太快了,不便於跟蹤問題,能夠在AS安裝目錄下的"bin/idea.properties"文件中增長「idea.cycle.buffer.size=你想緩存的行數」來調整窗口給的日誌緩存行數,但建議不要調得過高,不然會嚴重影響AS的體驗,緩存行數越多AS就會越卡,控制在5000行之內已經基本知足需求了。
在程序中使用Log類打印日誌時,TAG的長度建議不要超過23個字符,不然會作截斷處理,影響問題的準確跟蹤。
Logcat窗口的左側有一列工具快捷按鈕,方便咱們快速找到咱們須要的信息:
內存監控窗口:Memory Monitor
CPU監控窗口:CPU Monitor
GPU監控窗口:GPU Monitor
網絡流量監控窗口:Network Monitor
HPROF查看和分析工具:HPROF Viewer and Analyzer
內存分配跟蹤工具:Allocation Tracker
函數調用棧分析工具:Method Tracer
查看系統信息工具:System Information
Analyze APK...: