1.UI层优化
- 常见问题 : 过度绘制,布局复杂,层级过深
- 排查工具: GPU过度绘制工具 ,Hierachy Viewer(层级查看器)
过度绘制
在屏幕上一个像素点出现多次绘制 .(如背景重叠绘制)
布局复杂,层级过深
优化做法:
- 没有用的父布局--没有背景绘制或没有大小限制的父布局,不会对界面效果产生任何影响.可以通过<merge>替代
- 在布局层次一样的情况下,建议使用 LinearLayout代替RelativeLayout;
- 使用LinearLayout导致层次变深,可以使用RelativeLayout替换, 实现相同功能,选择一个层级最少的方案;
- 不常用的UI尝试使用<ViewStub>代替;
- 注:我们不能因为提高性能而忽略界面要达到的效果,要平衡;
2.代码优化
- 常见问题
- 在绘制时实例化对象(onDraw)
- 手机不能进入休眠状态
- 资源忘记回收
- handler使用不当导致内存泄漏
- 无用的属性和资源
- 可优化的布局
- 没有使用SparseArray代替HashMap
- 排查工具: Lint工具,可以排查代码问题
3.app逻辑层优化
- 常见问题
- 主线程中占用CPU时间过长的函数,特别关注IO操作(文件IO,网络IO,数据库等)
- 主线程中调用次数多的函数
- 排查工具:Traceview , 可以反映应用中函数的执行时长和次数
- 优化做法
- 不要阻塞主线程, 占用CPU较多的工作尽量放在子线程;
- 需要结合使用场景选择不同的线程处理方案;
- 如果有大量操作数据库数据时建议使用批处理操作;
注(以上工具都是Android系统提供的,都很简单, 用一用就会了, 在这里就不过多介绍了)