性能的分类:
1.渲染问题: 过度绘制,布局冗杂。
2.内存问题:内存浪费(内存管理),内存泄露
3.功耗问题: 耗电
优化原则:
用数据说话,使用性能工具测试快速定位问题
使用低配置的设备:同样的程序,在底端配置的设备中,相同的问题会暴露的更加明显。
权衡利弊:在能够保证产品稳定,按时完成需求的情况下去做优化
优化方法:
内存泄露,层级冗余,过度绘制等无法感知(工具测试)。滑动卡顿是可以感知的。
定位问题: 通过工具检测,分析数据,定位在什么地方存在性能问题
1.渲染:
滑动流畅度,fps 60最好
过度绘制:单页面的3x overdraw小于25%
启动时间:这里说的是Activity界面启动时间,一般低于300ms,需要用高频摄像机计算时间。
2.内存
内存大小:峰值越低越好,需要优化前后做对比
内存泄露:需要用工具检查对比优化前后
3.功耗:单位时间内的掉电量,掉电量越少越好,业内没有固定标准,
常见问题
- 1.在UI线程做耗时操作,导致UI线程卡顿。
- Layout布局过于复杂
- 同一时间动画执行次数过多,导致cpu或GPU负载过重
- view过度绘制,某些像素同一帧绘制多次
- View 频繁触发 invalid
- 内存频繁触发GC过多
- 冗余资源及逻辑等导致加载和执行缓慢
- 臭名昭著的ANR