确定当前前台(运行)应用程序的最佳方法(使用服务?)

Faa*_*aas 5 time service android android-intent

我正在构建一个需要确定应用程序运行时间的应用程序,因此我可以显示他/她使用的应用程序的用户统计信息.我在网上找到了多种解决方案,但这些解决方案存在缺陷.

以下是我找到的两个最佳选择:

我还在应用程序启动或停止时搜索了一个意图触发,但似乎没有(见摘要).这篇文章证实了这一点.我还找到了一个类:ActivityLifecycleCallbacks,当活动改变状态时,它会获得回调.但这仅适用于内部(在您自己的应用程序中读取)使用.

所以我的想法是使用服务来轮询运行除棒棒糖之外的版本的设备上的当前前台应用程序,并在运行lollipop或更高版本的设备上使用新的API.但这种"服务"理念是否是最好的选择,因为正如我之前所说的,电池效率似乎不高?也许有更好的选择?

FAAS

Ati*_*tiq 0

第一个选项肯定很糟糕,因为它已被弃用。

我宁愿建议你使用android.app.usage

您引用的应用程序可能会浪费大量 CPU 时间、RAM 和电池寿命,不断轮询 ActivityManager。

请记住,如果您计划让用户以外的任何人访问您打算跟踪的内容,则可能会侵犯隐私,而这种侵犯行为会让 CarrierIQ 陷入相当大的麻烦。