前言:
最近新入職一家公司,所以接手了之前android開發者的項目,說實話:這個項目代碼質量跟之前維護開發的一個金融項目代碼質量簡直都是神一樣的級別(包含代碼規範,代碼美觀,代碼註釋,代碼框架,請求框架,混淆以及插件引用),這個應該比金融的還要蛋疼了。慢慢優化路渺茫啊,打算熟悉代碼後,利用空閒時間用新的框架重新開發一套。
言歸正傳:
性能優化的幫助工具:
MAT,
Memory Monitor(屬於AndroidMonitor中一個模塊),
HeapTool(查看堆信息),
Allaction Tracking,
LeakCanary直接在手機端查看內存泄露的工具,需要少部分的代碼侵入
Lint工具
今天聊一下Lint,上面列出的工具中,Lint也算是用的最簡便的了,但對於他我都是用來檢測無用代碼,無用插件,無用引用,無用資源這一類的,內存優化的話,MAT吧,不過很蛋疼的事,需要經驗去幫助你判斷了!
使用:工具欄 -> Analyze -> Inspect Code
我們可以inspect整個項目(Whole project)也可以inpect某個module,個人認爲module爲library的基本沒有檢查的必要了,所以我一般選擇module-》app.。你也可以取消test sources。
下圖是我們點擊Ok後檢測出的代碼問題:
1.Android:看圖
Android Resources Validation
檢測XML正確性
Android XML element is not allowed
這個嘛,目前不太清楚
Android XML root tag validation
工具會根據xml的根屬性給出建議當前的xml文件應當放入哪個文件夾下面
onClick handler is missing in the related activity
檢測點擊事件活動
2.Android Lint:Accessibility:如果你檢測出可以查看說的問題,例如下圖:
這項基本都是對事件傳遞可能造成點擊失效所列舉出的警告,可以忽略,如果有你寫的自定義控件,不妨可以試着看看有什麼bug。
至於這兩個:
Missing 'contentDescription' attribute on image
提示給ImageView控件添加contentDescription屬性,意思是添加備註。
'clickable' attribute found, please also add 'focusable'
一個控件(比如圖片),如果沒有定義focusable(可聚焦的),卻定義了是clickable(可點擊的),那麼是不能通過鍵盤訪問的。
3.Android Lint: Correctness
這項包含內容比較多,可以自己去看看:比如檢測custom widget的繼承建議、使用的構造函數的建議、api版本支持的建議。
4.Android Lint: Internationalization
Hardcoded text
建議text文本應當寫入string.xml文件
Overlapping items in RelativeLayout
檢測出的控件重疊問題
Padding and margin symmetry
建議padding和margin使用時,要做到對稱,這樣在屏幕適配的時候才能展現的完美
TextView Internationalization
在使用textview的時候要遵循國際化,檢測setText()是拼接字符串問題
Using left/right instead of start/end attributes
4.2版本後加入了新的對從右到左閱讀順序的支持,建議使用start/end代替left/right
5.Android Lint: Performance(性能建議)
該檢測涉及較多,例如:無用的資源圖片、過度繪製、多餘的父佈局、handler造成的內存泄漏、非靜態內部類造成的內存泄漏、隱士持有context引起的內存泄漏、cursor未關閉、layout佈局引起的渲染性能、layout佈局優化等。
6.Android Lint: Security
源碼api使用是否規範、硬件標識符的建議等
7.Android Lint: Usability
View構造方法、textview,button屬性使用等方面的建議
8.Class structure(從類結構方面的建議)
比如:類成員和局部變量的建議、final,static關鍵字的使用注意事項
9.Code maturity issues
棄用api的建議
10.Code style issues
代碼關鍵詞使用,如:private修飾詞的適用合法性,代碼分號使用合法性
11.imports
無用的引用