UI卡顿面试题
1、UI卡顿原理
View的绘制帧数保持60fps是最佳,这要求每帧的绘制时间不超过16ms(1000/60),如果安卓不能在16ms内完成界面的渲染,那么就会出现卡顿现象
2、UI卡顿的原因分析
- 在UI线程中做轻微的耗时操作,导致UI线程卡顿
- 布局Layout过于复杂,无法在16ms内完成渲染
- 同一时间动画执行的次数过多,导致CPU和GPU负载过重
- overDraw,导致像素在同一帧的时间内被绘制多次,使CPU和GPU负载过重
- View频繁的触发measure、layout,导致measure、layout累计耗时过多和整个View频繁的重新渲染
- 频繁的触发GC操作导致线程暂停,会使得安卓系统在16ms内无法完成绘制
- 冗余资源及逻辑等导致加载和执行缓慢
- ANR
3、UI卡顿的优化
- 布局优化
- 使用include、ViewStub、merge
- 不要出现过于嵌套和冗余的布局
- 使用自定义View取代复杂的View
- ListView优化
- 复用convertView
- 滑动不加载
- 背景和图片优化
- 缩略图
- 图片压缩
- 避免ANR
- 不要在UI线程中做耗时操作