前言:
最近新入职一家公司,所以接手了之前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
无用的引用