Android 应用性能指标

不管你是发布一个新的 Android 运用,仍是希望进步现有运用的功能,你都可以运用 Android 运用功能指标来协助你。

在这篇文章中,我将解释什么是 Android 运用功能指标,并列出8个需求考虑盯梢的维度和主张的基线

什么是 Android 运用功能指标?

Android 运用功能指标量化了一个 Android 运用的功能。开发人员经过树立自己的盯梢体系或将运用程序连接到第三方渠道来搜集这些数据。不管采用何种搜集办法,功能指标都能标明一些要害信息,如运用程序的运转功率以及用户对界面的反响。有了这些信息,开发者可以解决过错并作出调整,以改进整体用户体会。

为什么 Android 运用功能指标很重要?

Android 运用功能指标很重要,由于它们可以协助开发者确认其产品的有效性。经过比较实际数据和期望,开发者可以从头评估他们的期望或对运用程序进行调整。

这些指标也可以协助企业:

  • 发明更好的用户体会
  • 促进更好的品牌忠诚度
  • 指导开发吸引大众商场的新运用
  • 在其行业界坚持竞争力

8个 Android 运用功能指标

1. 运用发动时刻

从用户点击运用图标发动运用到看到第一页的时刻

基线

冷发动时刻 P50<2sP_{50} < 2s

Pk表明第k百分位数P_k表明第k百分位数

百分位数(Percentile)是统计学术语,若将一组数据从小到大排序,并核算相应的累计百分点,则某百分点所对应数据的值,就称为这百分点的百分位数


运用程序的发动可以在三种状况下进行,每种状况都会影响你的运用程序对用户可见的时刻:冷发动、温发动和热发动。在冷发动中,你的运用程序从头开端。在其他状况下,体系需求将运转中的运用从后台带到前台。

Android运用初始显现时刻(TTID)和彻底显现时刻(TTFD)指标来优化冷发动和温发动的运用程序。Android 运转时 (ART) 运用这些指标的数据来高效地预编译代码,以优化未来发动。

Android 应用性能指标

2. 冻住帧(Frozen Frame)

冻住帧是指渲染时刻超越700ms的界面帧。

这意味着你的运用在帧的呈现过程中几乎有一秒钟的时刻卡住不动,对用户输入无呼应。咱们通常主张运用在 16ms 内呈现帧,以保证界面流通。但是,当运用发动或转换到其他屏幕时,初始帧的制作时刻通常会超越 16ms,这是由于运用必须扩充视图,对屏幕进行布局并从头开端履行初始制作。因此,Android 将冻住帧(frozen frame)与呈现速度缓慢(slow rendering)分开盯梢。主张运用中的任何帧的呈现时刻都不该超越 700ms。

基线

冻住帧的百分比应该小于1%

3. 界面呈现缓慢(Slow Rendering)

运用程序渲染的帧数超越16ms(低于60fps),体系就会被迫跳帧,用户就会感觉到运用程序的卡顿。

基线

慢速帧的百分比应低于5%


界面呈现是指从运用生成帧并将其显现在屏幕上的动作。如需保证用户可以流通地与您的运用互动,您的运用呈现每帧的时刻不该超越 16ms,以到达每秒 60 帧的呈现速度。假如运用存在界面呈现缓慢的问题,体系会不得不越过一些帧,这会导致用户感觉到运用不流通,这种状况称为卡顿(jank)。这个16ms的数字来自于手机的硬件,它界说了屏幕在一秒钟内可以更新的速度。现在大多数设备以60赫兹的速度更新,这意味着你有16ms的时刻来履行每一帧的所有逻辑。假如错过了这个时刻窗口,就会得到一个丢帧。

4. 运用程序无呼应(Application No Responseding)

当UI线程被阻塞超越5秒时,会触发运用程序无呼应(ANR)过错。

基线

  1. 日活中呈现一次ANR的份额应该小于0.47%。

  2. 日活中呈现两次或更少的ANR的份额应该小于0.24%。

日活指的是一日内登录或运用运用程序的用户数。


假如 Android 运用的界面线程处于阻塞状况的时刻过长,会触发“运用无呼应”(ANR) 过错。假如运用位于前台,体系会向用户显现一个对话框,如下所示。ANR 对话框会为用户提供强制退出运用的选项。

Android 应用性能指标

5. 溃散(Crash)

只要呈现未处理的异常或信号导致的意外退出,Android运用就会溃散。

基线

没有呈现溃散的份额应该大于99.95%


运用 Java 或 Kotlin 编写的运用会在抛出未处理的异常(由Throwable类表明)时溃散。运用机器码或 C++ 语言编写的运用会在履行过程中遇到未处理的信号(如SIGSEGV)时溃散。

当运用溃散时,Android 会中止运用的进程并显现一个对话框,奉告用户运用已中止,如下图所示。

Android 应用性能指标

6. 内存消耗(Memory Consumption)

运用程序当前运用的物理内存的大小。

基线

Android 应用性能指标

假如 Android 运用程序消耗过多的内存,在运转时或许无法在内存中分配一个目标,就会抛出一个 OutOfMemoryError,导致运用忽然溃散,并显现运用程序 “已经中止 “的通知,发明一个糟糕的用户体会。

7. CPU 利用率(CPU percent utilization)

运用在运转时消耗的CPU处理才能的百分比

基线

Android 应用性能指标

CPU 利用率是用来量化处理器在运用程序之间的同享状况。单个运用程序的高 CPU 利用率或许标明它对处理才能的要求很高,或许它或许呈现毛病并影响你的用户设备的电池寿数。

8. 网络呼应时刻(Network Response Time)

呼应时刻是指服务器呼应客户的恳求所需的时刻。计时器以毫秒为单位,从客户宣布恳求的那一刻开端,到服务器发回第一个呼应时中止。

基线

P90<1sP_{90} < 1s

Pk表明第k百分位数P_k表明第k百分位数

百分位数(Percentile)是统计学术语,若将一组数据从小到大排序,并核算相应的累计百分点,则某百分点所对应数据的值,就称为这百分点的百分位数


呼应时刻有时被界说为第一个字节的时刻(TTFB),它是指从客户端恳求到第一个数据包被发回给客户端的时刻。呼应时刻不包括客户的设备渲染或处理任何收到的数据所需的时刻。

参考

  • android developer # launch time
  • android developer # frozen
  • android developer # render
  • android developer # anr
  • android developer # crash
  • mobile vitals
  • monitor mobile vitals datadog