如何检测活动何时启动(Android Jelly Bean)

时间:2014-08-26 11:36:15

标签: java android multithreading optimization

我想做什么:我制作的应用程序跟踪应用程序的使用情况,就像Play商店中的许多应用程序一样。

我已经搜索了一段时间来解决它,但我没有找到有用的答案。

  • 我知道没有Receiver检测到应用启动。
  • 我尝试使用Logcat过滤ActivityManager但不幸的是我认为Android已阻止SDK应用访问Jelly Bean中的READ_LOGS权限。

我找到了解决此问题但尚未优化的解决方案:我声明了一个与Thread一起使用的新Service,我制作了这个问题{{ 1}}睡眠x毫秒,每次运行我都会运行一个测试来运行活动,并根据我跟踪的活动时间启动(低精度)。

当我尝试这个时,我发现它浪费了大量的CPU时间,内存和电池寿命。

问题:是否有更高效和优化的解决方案?如果是,请解释一下如果不是,Play商店中的应用程序(如BreakFree,Menthal ......)如何以良好的精度跟踪应用程序使用情况?


在此先感谢,我们将不胜感激,找到一些有用的解决方案。

1 个答案:

答案 0 :(得分:0)

你需要一种服务,这种服务会不断在后台运行。让您的服务检查特定的 PID (进程ID)。

由于每个应用程序都有自己的进程ID,因此可以通过

获取它
int id= android.os.Process.myPid();

使用android.intent.category.LAUNCHER类别监听android.intent.action.MAIN。然后让广播接收器覆盖onReceive方法并检查以查看应用程序或进程的名称。

然后根据需要制定条件。

问候