原因
- 手机上页面刷新频率位60FPS,即1秒有60帧画面的刷新
- 1帧画面就是1/60ms即16.7ms
- 在16.7ms内需要由CPU和GPU协同完成产生1帧画面

1544691001603.jpg
- CPU花费一定时间做视图的布局,文本的计算,视图的绘制及图片解码等操作,最终将产生的位图提交给GPU
- GPU花费一定时间做图层的合成,纹理的渲染等操作,然后准备好下一帧画面,在下一个VSync信号到来前,将该帧画面显示出来
- 如果CPU进行的相关操作很耗时,那么留给GPU的时间就不够了,当下一个VSync信号到来时,没有将该帧画面显示,那么就会被跳过,由此产生了掉帧,最终效果造成了滑动的卡顿
总结:在规定的16.7ms内,在下一帧垂直同步信号到来前,并没有由CPU和GPU完成下一帧画面的合成,于是就会导致掉帧,从而造成卡顿
优化解决方案
CPU方面
减轻CPU工作时长和压力,来达到优化的效果
- 对象创建、调制、销毁放入子线程
- 预拍版(UI布局计算、文本计算)
- 预渲染(文本等异步绘制,图片编解码)
GPU方面
- 纹理渲染
- 视图混合(图层层级很多的情况下)