【问题标题】:How to track the time elapsed between when user taps on icon in launcher and when an Activity displays?如何跟踪用户点击启动器中的图标和活动显示之间经过的时间?
【发布时间】:2017-11-09 14:33:48
【问题描述】:

我正在尝试定量测量 Android 应用的启动时间性能,但我很难想出一种方法来测量用户按下启动器图标和 Activity 实际显示之间经过的时间。

我想让它尽可能接近用户所看到的,所以简单地跟踪Activity.onCreate 和Activity.onResume 之间的时间是行不通的。

在Application 类中启动计时器也不起作用,因为它可以通过其他方式启动,而且当用户按下启动器时它已经在运行。

你有什么想法如何实现这样的东西吗?

以下是我总结的要求:

  1. 尽可能接近感知到的应用启动时间
  2. 仅测量从启动器到主 Activity 时的开始时间(而不是在点击通知后启动应用程序时...)。
  3. 考虑一个事实,即在实际主 Activity 之前可能会启动一些其他 Activity(例如启动屏幕)
  4. 我需要从代码中访问这些数据并将其发送到分析服务(不能只使用 ADB 左右)

【问题讨论】:

    标签: android


    【解决方案1】:

    也许您可以尝试通过调用getRunningTasks(1) 来使用后台服务来监听正在运行的任务。 (对于 API21,它只会返回您的应用程序任务,所以它已经足够好了。)

    一旦您检测到您的应用正在运行,请保存当前时间戳并停止您的循环。 在您的启动器 Activity 上,将当前时间戳保存在 OnResume 方法中并计算经过的时间。

    您的服务应该如下所示...

    boolean stop = false;
     while(!stop)
     { 
          List<RunningTaskInfo> taskInfo = am.getRunningTasks(1);
          ComponentName componentInfo = taskInfo.get(0).topActivity;
         if(componentInfo.getPackageName().equals("Your package name"))
         {
          //Save current time here
          stop = true;
         }
     }
    

    您也可以查看getAppTasks。也许它会比 getRunningTasks 方法更好。还没用过...

    【讨论】:

    • 我想过让某种服务监控应用程序的状态,但这似乎也不是一个可行的解决方案。真正的冷启动怎么样......那时应用程序将无法运行。 (不考虑启动接收器)当人们/操作系统杀死它时怎么办..我不想在生产应用程序中使用它,它不像概念证明的东西..它应该有零到没有副作用应用程序现在如何运行?(即没有前台服务和类似的东西?)
    • 该过程可以更早开始(通知,..),而不仅仅是当用户打开应用程序时
    【解决方案2】:

    也许已经晚了,也许你知道:

    您可以使用Firebase Performance Monitor。

    在您的应用中集成 Firebase 性能监控后,您无需编写任何代码。它会自动测量应用启动时间,无需做更多工作。

    您可以在 Firbase 控制台-> 性能 -> 在 Traces > _app_start > Duration 下查看数据

    According to Docs:

    应用程序启动跟踪测量用户打开应用程序之间的时间 应用以及应用何时响应

    【讨论】:

      【解决方案3】:

      其实你可以在 log-cat 上看到那个时间。 Logcat 实际上会告诉您用户点击第一个活动的显示之间经过的时间。您无需编写任何代码来跟踪时间。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-02-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多