前言
对于iOS卡顿优化的重要性不必多言,不仅影响着用户体验,更关系到用户留存、DAU等重要产品数据。
卡顿的概念
卡顿,即应用使用过程中出现了一段时间的阻塞,屏幕内容没有任何的变化,也无法进行任何操作。根据这个阻塞时间的长短,可以将卡顿问题划分为丢帧、卡顿、卡死三个不同的等级。
- 丢帧:画面更新不流畅,阻塞时间为几十毫秒。
- 卡顿:应用短时间内无法进行任何操作,恢复后能继续使用,阻塞时间从几百毫秒至几秒。
- 卡死:应用长时间无法进行任何操作,直至被系统杀死,阻塞时间超过几秒。
卡顿的原因
屏幕显示内容时,移动设备的具体处理流程是:
- CPU计算好显示内容,提交至GPU;
- GPU渲染完成后,将渲染结果放入帧缓存区FrameBuffer;
- 视频控制器会按照垂直同步信号机制,GPU发出VSync信号后,逐行读取FrameBuffer的数据;
- 经过数模转换传递给显示器进行显示。
由于垂直同步的机制,如果在一个VSync时间内,CPU 或者GPU没有完成内容提交,则那一帧就会被丢弃,等待下一次机会再显示,而这时显示屏会保留之前的内容不变,这个现象就是掉帧,当这个现