自定义控件的性能优化

自定义控件的性能优化主要包括三方面:性能优化、绘制优化、布局优化。

性能优化:
  1. 使用工具进行排查,包括:Memory Monitor、Allocation Tracker、MAT、LeakCanary.
  2. 避免在onDraw()和onLayout()中创建对象,因为这两个方法在绘制过程中会被频繁的调用。
  3. 使用较小的数据结构,如SparseArray。
  4. 对Bitmap进行压缩和复用。
  5. 避免内存泄漏。
绘制优化
  1. 保证每帧耗时操作不能超过16ms。由于Android中每秒传输帧数(FPS)不能低于60fps,所以,需要保证每帧耗时操作不能超过16ms。方法:在onDraw()绘制前开始计时,在结束后计算绘制时间,从而计算onDraw()绘制的时间。
  2. 通过主线程Looper处理消息或事件的时间差来监控应用整体卡顿的情况,例如第三方工具:BlockCanary。
  3. 避免绘制过度。例如,控件之间的重叠,空间本身与背景之间的重叠等。在手机的开发者选项中开启调试GPU过度绘制,选择显示过度绘制区域,查看手机屏幕上是否有颜色过深的区域,则为过度绘制的区域。
  4. 减少无意义的绘制,例如进度条更新显示,如果读取文件的数据量不超过总文件的1%,就无需更新绘制。
布局优化
  1. 减少布局的重叠和嵌套。如果自定义控件继承RelativeLayout,该布局的父布局也是RelativeLayout,则可以将子布局的根节点设置< merge>< /merge> 或者< viewStub> < /viewStub> viewStub介绍
  2. 尽量使用相对布局LinearLayout和约束布局ContraintLayout。

你可能感兴趣的:(Android,性能优化)