参考文档:[http://www.androidchina.net/8612.html]
性能问题分类
性能优化指标
测试方法
工具
| 渲染问题: 过度绘制、布局冗杂,UI卡顿,ANR |
滑动流畅度:FPS,即Frame per Second,一秒内的刷新帧数,越接近60帧越好;
过度绘制:单页面的3X(粉红色区域) Overdraw小于25%
启动时间:这里主要说的是Activity界面启动时间,一般低于300ms,
|
设置-开发中选项-调试GPU过度绘制
颜色代表值:粉色3次,红色4次
|
手机开发者选项:
调试GPU过度绘制、
启用严格模式、
显示CPU使用情况、
GPU呈现模式分析、
显示所有”应用程序无响应”。
|
| 内存问题: 内存浪费(内存管理)、内存泄漏 |
内存大小:峰值越低越好,需要优化前后做对比
|
| IDE中:Android Studio,比如静态代码检测工具、Memory Monitor、CPU Monitor、NetWork Monitor、GPU Monitor、Layout Inspector、Analyze APK等 |
|
|
内存泄漏:需要用工具检查对比优化前后
|
| SDK中:sdk\tools,比如DDMS、HierarchyViewer、TraceView |
| 功耗问题: 耗电,流量 | 单位时间内的掉电量,掉电量越少越好,业内没有固定标准。 |
| 第三方工具:MAT、LeakCanary、GT |
渲染问题
| 过度绘制 |
底部弹窗:
分享,礼物等
页面中弹窗:
确认弹窗
| 背景,蒙层 |
| 布局优化 |
布局太过复杂,
层级嵌套太深
导致绘制操作耗时
且增加内存的消耗
| 布局优化的建议:
- 第一个建议:可以使用相对布局减少层级的就使用相对布局,否则使用线性布局。Android中RelativeLayout和LinearLayout性能分析,参考:www.greatytc.com/p/8a7d059da…
- 第二个建议:用merge标签来合并布局,这可以减少布局层次。
- 第三个建议:用include标签来重用布局,抽取通用的布局可以让布局的逻辑更清晰明了,但要避免include乱用。
- 第四个建议:避免创建不必要的布局层级。(最容易发生的!)
- 第五个建议:使用惰性控件ViewStub实现布局动态加载
| GPU性能渲染 |
| 开发者选项 — GPU呈现模式分析 — 选择“在屏幕上显示为条形图” |