标题:UI优化分为两部分 过度绘制->UI卡顿
过度绘制检测工具:开发者选项->调试GPU过度绘制
一、过度绘制
1.布局嵌套
解决方案:减少布局嵌套,少使用线性布局(LinearLayout)和 绝对布局(AbsoluteLayout)
多采用约束布局(ConstraintLayout)
和相对布局(RelativeLayout)
,将可复用的组件抽取出来并通过include
标签使用,还可以使用merge
减少当前布局的层次嵌套,使用ViewStub标签来加载一些不常用的布局
2.背景色
解决方案:去除多余、没必要的背景色,多使用透明色,透明色不会被渲染
二、UI卡顿
概念:当这一帧超过16ms还没有完成绘制渲染的时候,就会出现丢帧卡顿的现象
UI卡顿检测工具:
- 利用UI线程Looper打印日志
- 使用Choreographer.FrameCallback回调的方式获取每一帧的时间差,如果大于16ms说明发生了丢帧现象
解决方案:不要在主线程做一些耗时操作,也不要被其他线程挂起GC,那么页面刷新时无法在16ms内完成