Android 性能直接影响着用户使用Android手机的直观体验,下面简单说明几个显著的影响点。
一、过度绘制
过度绘制,是指页面展示中,重复的绘制多个View。一般由以下几个方面。
- 重复设置背景
最常出现的就是已经在主题中设置了theme,Activity的布局中再次重复设置theme;还有一种常见的情况是父容器中设置了背景,子view中又重新设置了一遍,导致父容器的背景没使用,但是却需要绘制渲染。比如控件实现自己的效果,但是不符合要求,使用该控件后,再次设置各类属性。
- 不显示的view,使用invisible,而非gone;加载而不显示(不如直接不加载)
常用工具:
android设置开发者模式-调用过度绘制,看颜色即可查看过度绘制情况,颜色越深,过度绘制越严重。
二、布局层次过深
有以下几个方面:
- 不必要的父容器,多个Layout的套用;
- view层级太深,view太多;
- 嵌套使用weight,尽量少用weight属性;
- layout的不恰当使用,少使用RelativeLayout,可适当使用<include/>标签重用Layout
三、丢帧
- 与硬件强关联,避免出现频繁的升降频率;
- 数据处理,超过16ms,或者非16ms的整数倍
常用的分析工具:
- Hierarchy Viewer:观察UIs 上的Overdraw情况
- Android Lint:google静态代码检查
- systrace