繁体   English   中英

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

[英]How to detect when an activity is launched ( Android Jelly Bean )

我要做什么:我正在制作一个应用程序,该应用程序可以像Play商店中的许多应用程序一样跟踪应用程序的使用情况。

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

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

我找到了解决此问题的解决方案,但未进行优化:我声明了一个与Service配合使用的新Thread ,使该Thread休眠了x毫秒,每次运行我都对运行的Activity进行了测试,并以此为基础跟踪了Activity时间发射(低精度)。

当我尝试此操作时,我发现这浪费了很多CPU时间,RAM和电池寿命。

问题:是否有更有效和优化的解决方案? 如果是,请解释一下。如果否,那么Play商店中的应用程序(例如BreakFree,Mentalal ...)如何精确地跟踪应用程序使用情况?


在此先感谢您,找到一些有用的解决方案。

您需要一项服务,该服务将在后台不断运行。 比您的服务更要检查特定的PID (进程ID)。

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

int id= android.os.Process.myPid();

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

然后根据需要制定条件。

问候

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM