Skip to content
阅读进度

卡顿和 ANR 怎么区分与定位? ​

返回 性能与稳定性 目录

标准回答 ​

卡顿是画面或交互没能按期更新;ANR 是应用在特定系统检测场景下未及时响应。二者可能同源,但卡顿不一定达到 ANR。

关键机制 ​

  • 卡顿先看 Trace 的主线程、RenderThread、GPU 和 FrameTimeline,区分计算重、IO、锁、Binder 等待与调度不及时。
  • ANR 结合原因、主线程堆栈和相关线程一起分析;主线程在等锁时,要继续追持锁线程。
  • 60Hz 的帧间隔约 16.7ms,120Hz 约 8.3ms;这是刷新节奏参考,不是每个阶段都能独占完整时间。

通俗例子 ​

主线程堆栈显示等待 Binder,不代表客户端没有责任。继续看服务端是否持锁、是否同步读硬件,以及调用能否异步化。

易混淆点 ​

不同 ANR 类型、版本和前后台场景阈值不同,不能统一回答“超过 5 秒都是 ANR”。

参考资料 ​

内容来源 ​

用完整回答理解机制,用真实证据解释项目。