利用 Android Vitals 提高应用的性能和稳定性

  • 测试
  • 开发
  • 分析

性能和稳定性与 Google Play 上的好评有直接关系。修复问题和防止不良行为可以提升用户体验、提高评分以及增加保留应用的安装人数。

这样做的好处

Android Vitals 包含有关稳定性、耗电量、卡顿、启动时间和权限遭拒情况的应用性能指标。通过跟踪这些指标,您可以找出并修正会直接影响用户体验的不良应用行为。一旦有需要调查的异常情况出现,Android Vitals 核心指标也会显示异常情况,以及可供您比较同类应用性能的各项基准数据。指标值较高的应用能够更有效地推广,进而提升在 Google Play 商店搜索结果中的排名。此类应用也更可能列入 Google Play 上的“新上线 + 最近更新”和“编辑精选”合集,获得 Google Play 年度奖提名的可能性也更大。

关键指标

  • 稳定性 | ANR 发生率:在每日工作时段遇到至少 1 次应用无响应 (ANR) 问题的用户数量百分比。ANR 通常是由于界面线程和后台进程(广播接收器)出现死锁情况或速度缓慢所导致。
  • 稳定性 | 崩溃率:在每日工作时段遇到至少 1 次崩溃问题的用户数量百分比。崩溃问题通常是由于未处理的异常情况、资源耗尽、失败的断言或其他非预期的状态所导致。
  • 呈现时间 | 16 毫秒 (60fps):一天内遇到超过 15% 的帧的呈现时间超过 16 毫秒的用户数量百分比。如果应用在绘制每帧之前需要太长的时间来呈现帧,则会出现卡顿的情况。呈现时间偶尔或稍微延长可能不易察觉,但 150 毫秒的呈现时间会导致可察觉的卡顿现象。
  • 呈现时间 | 700 毫秒:一天内遇到 1000 帧中超过 1 帧的呈现时间超过 700 毫秒的用户数量百分比。如上所述,呈现时间较长会使应用执行不够顺畅,导致用户体验变差。如果呈现帧需要 700 毫秒或更长时间,则对于用户来说,您的应用很有可能看起来像处于冻结状态。
  • 电池 | 部分唤醒锁定:在特定日期遇到至少 1 次长达 1 小时以上的唤醒锁定的用户数量百分比。部分唤醒锁定操作卡住会阻止闲置设备进入休眠状态及节电模式。
  • 电池 | 唤醒次数:自设备充满电后,每小时遇到 60 次以上唤醒的用户数量百分比。经常发生唤醒情况是由于您应用外部的闹钟执行的定时操作所导致,会阻止闲置设备进入休眠状态。
  • 启动时间:用户遇到冷启动或热启动时间过长问题的工作时段数百分比。 Proof,启动缓慢可能是由一系列问题导致的,但通常表明在初始化应用时执行了繁重的工作负载或复杂的逻辑。
  • 权限遭拒:用户拒绝了权限或选择不再询问的每日权限工作时段数百分比。权限遭拒可能表明用户不清楚为何请求某项权限或将该请求视为不必要或不合理。

最佳做法

  • 考量不良行为并予以根除:在开发应用的过程中,考量应用在不同环境中的行为方式。例如,如果您在功能完善的高端设备上开发应用并测试其性能,则应考量应用在电源、内存、带宽以及 CPU/GPU 性能方面都很有限的低端设备上的性能如何。使用发布前测试报告,在每个版本发布之前增加应用所测试的设备类型。
  • 在发布新的应用版本后查看 Android Vitals:在您发布应用后,Android Vitals 会针对应用在实际正式版设备上的运行状况提供性能指标,让您能找出在特定设备和 Android 版本上会影响用户体验的问题和不良行为。
  • 找出存在问题的设备:应用可能只在具体某个设备或某些设备上出现不良行为。根据对用户体验造成影响的严重程度以及受影响的设备和用户数量,您可以在问题得到修复之前,先选择更新应用的设备定位以将这些设备排除在外。
  • 找出存在问题的 Android 版本:应用可能只会在特定的 Android 版本上出现不良行为。对于用户数量较少的较低 Android 版本,请更新您的应用以消除不良行为,或者在应用的清单中将 <uses-sdk> 元素的 android:minSdkVersion 属性更新至应用不会出现任何不良行为的 API 级别。对于新的 Android 版本,请一律通过更新应用来修正不良行为,而不是通过设置 <uses-sdk> 元素的 android:maxSdkVersion 属性来排除较新的 Android 版本。
  • 使用崩溃报告工具找出并跟踪崩溃和 ANR 问题:使用崩溃报告工具(如 Firebase 崩溃报告Crashlytics 以及 Android Studio 调试程序,尽可能找出并跟踪导致崩溃和 ANR 问题的各种情况。
  • 使用 JobScheduling API 避免唤醒锁定和唤醒:使用 JobScheduling API(如 JobScheduler)灵活安排后台进程和任务,以便让平台更好地管理闲置状态,从而减少耗电量。
  • 使用 FrameMetrics API 找出呈现缓慢的帧:使用 FrameMetrics 以很高的精细度衡量应用在正式版设备中各项互动的帧呈现时间,从而让您无需依赖于通过 USB 连接的测试设备,即可找出在正式版设备上导致卡顿的特定互动或事件。
  • 遵循权限请求的最佳做法:在请求权限之前向用户提供说明,并确保用户可在授予权限后立即获得好处。然后,帮助用户撤消拒绝授权设置。还要确保用户已针对您的应用启用正确设置,如果您需要位置信息,请提出位置信息设置请求,以确保相应的设备设置已开启。
  • 使用发布前测试报告在真实设备上测试您的应用,以在发布更新之前找出并解决问题。

示例