UI卡顿、掉帧

原因

  • 手机上页面刷新频率位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方面
  • 纹理渲染
  • 视图混合(图层层级很多的情况下)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容