JankStats
2022-09-23 本文已影响0人
____Rainbow
JankStats 是首个专为在用户设备上检测及报告应用的性能问题而构建的 AndroidX 库。
JankStats 是占用空间相对较小的 API,主要有三大目标: 捕获每帧的性能信息、在用户设备 (不仅是开发设备) 上运行、以及在应用出现性能问题时启用检测,并报告所发生的情况。
每帧性能
Android 平台已提供多种方法,用于获取帧性能数据。例如,从 API 24 开始就可以使用 FrameMetrics 获取相关数据,后续多个版本也在进一步丰富该功能,以便为您提供更多详细信息。
因此,如果您想确保自己的帧持续时间逻辑适用于所有版本,就需要在不同的 API 版本中实现不同的测试和报告机制。现在,您可以使用统一的 JankStats API 来实现这些功能。除此之外,它还提供了其他。
JankStats 通过提供单一 API 来报告每帧的时间,从而简化您的工作,并会在内部委派适当机制 (比如 API 24 以上会委派给 FrameMetrics)。您不必关心这些数据的来源,只需让 JankStats 告诉您完成特定事项花费的时间,然后便可在回调中获取相关信息。
//frameStartNanos 帧开始时间
//frameDurationUiNanos 在此帧的UI部分花费的时间(以纳秒为单位)。
//frameDurationCpuNanos 在此帧的CPU部分花费的时间(以纳秒为单位)
//isJank 帧是否应被视为卡顿
//states 一组字符串对,其中包含呈现帧期间应用状态的相关信息
I/JankStatsSample: FrameData(frameStartNanos=23391606297846, frameDurationUiNanos=130885528, frameDurationCpuNanos=132800944, isJank=true, states=[RecyclerView: Settling])
管理状态
您可能需要调用其他 API 来自定义 JankStats,例如,注入应用状态信息,使帧数据更有用。
此静态方法可检索给定视图层次结构的当前 [PerformanceMetricsState] 对象。