跟踪卡顿

为了确保应用能够顺畅运行,您应该将目标设置为 60fps(16 毫秒/帧)。如果您的应用无法满足所需的帧呈现时间要求,系统将不得不跳过一些帧,用户则会将这种行为视为应用卡顿。这种因缺少屏幕帧而产生的不流畅互动称为卡顿。如需详细了解这种体验,请参阅呈现速度缓慢

慢帧、冻结的帧和 ANR 之间的关系

缓帧、冻结的帧和 ANR 是应用可能会遇到的各种不同形式的卡顿。如需了解它们的区别,请参阅下表。

慢帧 冻结的帧 ANR
呈现时间 16 毫秒到 700 毫秒 700 毫秒到 5 秒 5 秒以上
用户受到明显影响的区域
  • RecyclerView 滚动出现异常
  • 在包含复杂动画的屏幕上无法正常呈现动画效果
  • 应用启动期间
  • 从一个屏幕移至另一个屏幕(例如,屏幕转换)
  • 当您的 activity 位于前台时,您的应用在 5 秒钟内未响应输入事件或 BroadcastReceiver(如按键或屏幕轻触事件)。
  • 虽然前台没有 activity,但您的 BroadcastReceiver 用了相当长的时间仍未执行完毕。

单独跟踪慢帧和冻结的帧

当应用启动或转换到其他屏幕时,初始帧的绘制时间通常会超过 16 毫秒,这是因为应用必须扩充视图,对屏幕进行布局并从头开始执行初始绘制。

关于确定卡顿问题的优先级和解决卡顿问题的最佳实践

解决应用中的卡顿问题时,请遵循以下最佳实践:

  • 找出最易重现的卡顿实例并加以解决。
  • 优先解决 ANR。虽然慢帧或冻结的帧可能会导致应用运行缓慢,但 ANR 会导致应用挂起。
  • 呈现速度缓慢的问题难以重现,但您可以从消除 700 毫秒的冻结的帧入手。应用启动或更改屏幕期间最容易出现这种情况。