【问题标题】:Android: Get Time Spent Per ActivityAndroid:获取每个活动花费的时间
【发布时间】:2012-04-04 11:00:57
【问题描述】:

首先,我不是在寻找在给定应用程序上花费的时间。已经有“一个应用程序”,com.android.settings/.UsageStats,以及 AOSP 中的大量支持代码frameworks/base/services/java/com/android/server/am/UsageStatsService.java 等。

到目前为止,我检查过的代码似乎没有记录在特定 <activity>s 上花费的时间。我曾想过以两种方式获取此信息,但我觉得必须有一些更清洁、更简单的方法,它可以利用更多现有代码。这些想法是:

  1. 检测基类 ActivityonPause()onResume(),以破解时间戳,并在某个位置(可能是 SQLite 数据库)记录信息。
  2. 检测Context 类,以便在调用startActivity() 和朋友时记录下来。

那么您认为有什么比这些选项更好的呢?提前谢谢!

【问题讨论】:

  • 适用于 Android 的 Google Analytics(分析)尝试跟踪在 Activity 中花费的平均时间。你调查过吗?
  • 嗨 Chuck,感谢您提出这个问题。不过,我认为这一步太精细了(在每个应用程序、应用程序内,然后是应用程序内活动的连续统一体上。)

标签: android frameworks android-activity android-intent usage-statistics


【解决方案1】:

那么您认为有什么比这些选项更好的呢?

任何东西都比 #2 好,它需要自定义固件。

#1 是您在 AFAIK 下 API 级别 13 的 SDK 中的唯一选择。

Application.ActivityLifecycleCallbacks 中添加了 API 级别 14(也称为 Android 4.0),您可以通过调用 Application(例如 getApplicationContext())的 registerActivityLifecycleCallbacks() 进行注册。我还没有使用过这些,但看起来你可以安排一个监听器来通知活动的来来去去,避免强迫你用你想要的日志来扩展一些公共基础 Activity 类。

【讨论】:

  • 您好 CommonsWare,感谢您的回复!是的,我的意图是两者都将涉及自定义 framework.jar。我的用例不是应用程序开发——如果可能的话,我宁愿不修改任何应用程序代码(当然也有无论如何都不可能的情况。) WRT #1,我并不是要扩展Activity 在应用程序中,而是直接和野蛮地编辑 Activity.java 实现。
  • @Jameson:啊,好的。大多数在 SO 上提出问题的人都在进行正常的 SDK 开发。如果您正在创建自定义固件,您的选项 #1,或者可能向后移植 Application.ActivityLifecycleCallbacks 并使用它们,可能会满足您的需求。 #2 的危险在于你不知道是否有其他代码路径启动不通过startActivity() 的活动。
猜你喜欢
  • 2017-10-19
  • 2021-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多