今天我们来学习下 Android 中 UI卡顿方面的知识,UI卡顿的原理、UI卡顿的原因分析、UI卡顿的优化。
一、UI卡顿的原理
1、Android系统每隔16ms发出VSYNC信号,触发对UI进行渲染;
2、View的绘制帧数每秒保持60fps最佳,这要求每帧的绘制时间不超过16ms(1000/60),如果安卓不能在16ms内完成界面的渲染,那么就会出现丢帧卡顿现象;
二、UI卡顿的原因分析
1、在UI线程中做轻微的耗时操作,导致UI线程卡顿;
2、布局Layout过于复杂,无法在16ms内完成渲染;
3、同一时间动画执行的次数过多,导致CPU和GPU负载过重;
4、View过度绘制,导致像素在同一帧的时间内被绘制多次,使CPU和GPU负载过重;
5、View频繁的触发measure、layout,导致measure、layout累计耗时过多和整个View频繁的重新渲染;
6、频繁的触发GC操作导致线程暂停,导致暂时阻塞渲染操作;
7、冗余资源及逻辑等导致加载和执行缓慢;
8、ANR;
三、UI卡顿的优化
1、布局优化 :
- 使用include、ViewStub、merge标签;
- 减少布局的嵌套、去除冗余的布局;
- 使用自定义View取代复杂的嵌套布局,减少mesure、layout的耗时操作。
2、ListView优化
- 复用convertView;
- 滑动不加载图片,更新UI;
3、背景和图片优化
- 减少不必要的背景设置;
- 图片压缩处理显示;
4、避免ANR
四、实践
参考资料:
http://blog.csdn.net/qq_30379689/article/details/73698192