跟踪卡顿
使用集合让一切井井有条
根据您的偏好保存内容并对其进行分类。
为了确保应用能够顺畅运行,您应该将目标设置为 60fps(16 毫秒/帧)。如果您的应用无法满足所需的帧呈现时间要求,系统将不得不跳过一些帧,用户则会将这种行为视为应用卡顿。这种因缺少屏幕帧而产生的不流畅互动称为卡顿。如需详细了解这种体验,请参阅呈现速度缓慢。
慢帧、冻结的帧和 ANR 之间的关系
缓帧、冻结的帧和 ANR 是应用可能会遇到的各种不同形式的卡顿。如需了解它们的区别,请参阅下表。
|
慢帧 |
冻结的帧 |
ANR |
呈现时间 |
16 毫秒到 700 毫秒 |
700 毫秒到 5 秒 |
5 秒以上 |
用户受到明显影响的区域 |
- RecyclerView 滚动出现异常
- 在包含复杂动画的屏幕上无法正常呈现动画效果
|
- 应用启动期间
- 从一个屏幕移至另一个屏幕(例如,屏幕转换)
|
- 当您的 activity 位于前台时,您的应用在 5 秒钟内未响应输入事件或 BroadcastReceiver(如按键或屏幕轻触事件)。
- 虽然前台没有 activity,但您的 BroadcastReceiver 用了相当长的时间仍未执行完毕。
|
单独跟踪慢帧和冻结的帧
当应用启动或转换到其他屏幕时,初始帧的绘制时间通常会超过 16 毫秒,这是因为应用必须扩充视图,对屏幕进行布局并从头开始执行初始绘制。
关于确定卡顿问题的优先级和解决卡顿问题的最佳实践
解决应用中的卡顿问题时,请遵循以下最佳实践:
- 找出最易重现的卡顿实例并加以解决。
- 优先解决 ANR。虽然慢帧或冻结的帧可能会导致应用运行缓慢,但 ANR 会导致应用挂起。
- 呈现速度缓慢的问题难以重现,但您可以从消除 700 毫秒的冻结的帧入手。应用启动或更改屏幕期间最容易出现这种情况。
本页面上的内容和代码示例受内容许可部分所述许可的限制。Java 和 OpenJDK 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2023-05-30。
[{
"type": "thumb-down",
"id": "missingTheInformationINeed",
"label":"没有我需要的信息"
},{
"type": "thumb-down",
"id": "tooComplicatedTooManySteps",
"label":"太复杂/步骤太多"
},{
"type": "thumb-down",
"id": "outOfDate",
"label":"内容需要更新"
},{
"type": "thumb-down",
"id": "translationIssue",
"label":"翻译问题"
},{
"type": "thumb-down",
"id": "samplesCodeIssue",
"label":"示例/代码问题"
},{
"type": "thumb-down",
"id": "otherDown",
"label":"其他"
}]
[{
"type": "thumb-up",
"id": "easyToUnderstand",
"label":"易于理解"
},{
"type": "thumb-up",
"id": "solvedMyProblem",
"label":"解决了我的问题"
},{
"type": "thumb-up",
"id": "otherUp",
"label":"其他"
}]