我想做什么:我制作的应用程序跟踪应用程序的使用情况,就像Play商店中的许多应用程序一样。
我已经搜索了一段时间来解决它,但我没有找到有用的答案。
Receiver
检测到应用启动。Logcat
过滤ActivityManager
但不幸的是我认为Android已阻止SDK应用访问Jelly Bean中的READ_LOGS
权限。 我找到了解决此问题但尚未优化的解决方案:我声明了一个与Thread
一起使用的新Service
,我制作了这个问题{{ 1}}睡眠x毫秒,每次运行我都会运行一个测试来运行活动,并根据我跟踪的活动时间启动(低精度)。
当我尝试这个时,我发现它浪费了大量的CPU时间,内存和电池寿命。
问题:是否有更高效和优化的解决方案?如果是,请解释一下如果不是,Play商店中的应用程序(如BreakFree,Menthal ......)如何以良好的精度跟踪应用程序使用情况?
在此先感谢,我们将不胜感激,找到一些有用的解决方案。
答案 0 :(得分:0)
你需要一种服务,这种服务会不断在后台运行。让您的服务检查特定的 PID (进程ID)。
由于每个应用程序都有自己的进程ID,因此可以通过
获取它int id= android.os.Process.myPid();
使用android.intent.category.LAUNCHER类别监听android.intent.action.MAIN。然后让广播接收器覆盖onReceive方法并检查以查看应用程序或进程的名称。
然后根据需要制定条件。
问候