Android-确定应用程序启动和总时间为首要活动

Android-确定应用程序启动和总时间为首要活动,android,android-intent,android-activity,Android,Android Intent,Android Activity,我正在开发一种可以嵌入安卓APK的解决方案或代码,以跟踪应用程序的启动次数和运行时间。我知道一种方法是使用API 14和更低版本的Android中的ActivityLifecycleMethods,将代码放置在所有ActivityLifecycle事件中,或者提供一个基本Activity类 1) 有没有一种方法可以钩住ActivityLifecycleMethods,而不需要开发人员在将其他代码放入应用程序之外对其代码进行任何更改 我相信这个答案是否定的,因为即使使用Enum单例,它在被引用之前

我正在开发一种可以嵌入安卓APK的解决方案或代码,以跟踪应用程序的启动次数和运行时间。我知道一种方法是使用API 14和更低版本的Android中的ActivityLifecycleMethods,将代码放置在所有ActivityLifecycle事件中,或者提供一个基本Activity类

1) 有没有一种方法可以钩住ActivityLifecycleMethods,而不需要开发人员在将其他代码放入应用程序之外对其代码进行任何更改

我相信这个答案是否定的,因为即使使用Enum单例,它在被引用之前也不会被加载。此外,一旦活动发生更改,枚举单例将消失,因为在活动发生更改时使用了不同的类加载器

如果我想保留枚举单例,是否可以存储对applicationContext的引用,从而在活动更改时不会删除它?这就是谷歌的意思吗 “通常不需要对应用程序进行子类化。在大多数情况下,静态单例可以以更模块化的方式提供相同的功能。如果您的单例需要全局上下文(例如注册广播接收器),则可以为检索它的函数提供一个内部使用上下文的上下文。getApplicationContext()当第一次构造单例时

2) 我不喜欢这种针对较旧API版本的解决方案。开发人员很可能会忘记修改他们的活动生命周期方法,或者忘记从创建的BaseActivity继承。对于这些较旧的平台,还有其他独特的解决方案吗?是否有其他方法可以确定活动何时未运行?是否可以执行以下任一操作:

a) 使用类加载器确保始终使用具有适当度量的基本活动
b) 实施某种类型的心跳。如果应用程序暂停或终止,计时器是否会停止工作?还有别的办法吗?可以使用ActivityManager吗?

您有许多像Flurry这样的分析代理来完成这项工作。 当您想要跟踪某个事件时,将其添加到flurry中,并在特定时间后将其与服务器同步

您可以使用相同的逻辑

使用以下功能更好地创建库文件:

  • 启动应用程序
  • 结束应用程序并向数据库报告时间
  • 跟踪特定事件计数并更新到数据库
  • 将数据同步到您想要的服务器

  • 从应用程序中调用适当的事件。

    我希望找到一种方法,让开发人员编写和维护尽可能少的代码。由于开发人员调用start app和end app,开发人员很容易添加新的入口点和出口点,而错过将相应的调用添加到库中。提供更少的代码让开发人员感觉更好。我只是不确定是否有可行的选择。