你好,我是戴铭。今天,我来和你说说如何监控卡顿。
卡顿问题,就是在主线程上无法响应用户交互的问题。如果一个 App 时不时地就给你卡一下,有时还长时间无响应,这时你还愿意继续用它吗?所以说,卡顿问题对 App 的伤害是巨大的,也是我们必须要重点解决的一个问题。
现在,我们先来看一下导致卡顿问题的几种原因:
复杂 UI 、图文混排的绘制量过大;
在主线程上做网络同步请求;
在主线程做大量的 IO 操作;
运算量过大,CPU 持续高占用;
死锁和主子线程抢锁。
那么,我们如何监控到什么时候会出现卡顿呢?是要监视 FPS 吗?
以前,我特别喜欢一本叫作《24 格》的杂志,它主要介绍的是动画片制作的相关内容。那么,它为啥叫 24 格呢?这是因为,动画片中 1 秒钟会用到 24 张图片,这样肉眼看起来就是流畅的。
FPS 是一秒显示的帧数,也就是一秒内画面变化数量。如果按照动画片来说,动画片的 FPS 就是 24,是达不到 60 满帧的。也就是说,对于动画片来说,24 帧时虽然没有 60 帧时流畅,但也已经是连贯的了,所以并不能说 24 帧时就算是卡住了。
由此可见,简单地通过监视 FPS 是很难确定是否会出现卡顿问题了,所以我就果断弃了通过监视 FPS 来监控卡顿的方案。
那么,我们到底应该使用什么方案来监控卡顿呢?