【发布时间】:2014-12-15 12:24:37
【问题描述】:
我正在构建一个应用程序,它需要确定应用程序运行的时间,因此我可以显示他/她使用的应用程序的用户统计信息。我在网上找到了多种解决方案,但都存在缺陷。
这是我发现的两个最佳选择:
-
Using a polling mechanism 提供服务。此解决方案似乎电池效率低下,并且依赖于 deprecated 方法(自 API 级别 21 起):
getRunningTasks(int maximum) -
使用 Lollipop 中引入的新“App usage statistics”,但此解决方案仅适用于运行 android > 5.0 的设备。但我也想支持旧设备。
我还搜索了应用程序启动或停止时触发的意图,但似乎有none(请参阅摘要)。这个post 证实了这一点。我还发现了一个类:ActivityLifecycleCallbacks,当活动改变它的状态时它会得到回调。但这仅供内部(在您自己的应用程序中读取)使用。
所以我的想法是使用服务来轮询运行棒棒糖以外版本的设备上的当前前台应用程序,并在运行棒棒糖或更高版本的设备上使用新的 API。但是,这种“服务”理念是否是最佳选择,因为正如我之前所说,它似乎电池效率低下?也许有更好的选择?
法斯
【问题讨论】:
-
如果您的所有顾虑都与不推荐使用的方法有关,只需进行构建版本检查并相应地使用方法。
-
我不担心这种“服务”理念是否能很好地解决问题。我想要这个问题最有效的解决方案,在我看来,这种“服务”的想法远非有效。
标签: android android-intent service time