[英]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.