我正在开发一个应用程序,需要确定应用程序运行的时间,以便向用户显示他/她使用的应用程序的统计信息。我在网上找到了多种解决方案,但所有这些解决方案都有其缺点。
以下是我找到的两个最佳选项:
- 使用服务的轮询机制。这种解决方案似乎效率低下,并且依赖于已弃用的方法(自API级别21):
我还搜索了一下应用程序启动或停止时是否有意图触发,但似乎没有none(请参见摘要)。这篇文章证实了这一点。此外,我发现了一个类:ActivityLifecycleCallbacks,它在活动状态更改时获取回调。但这仅适用于内部(即在您自己的应用程序中阅读)使用。
因此,我的想法是在运行版本低于棒棒糖的设备上使用服务来轮询当前前台应用程序,并在运行棒棒糖或更高版本的设备上使用新的API。但是,这个“服务”想法是最好的选择吗?因为如我之前所说,它似乎效率低下会耗费电池?也许有更好的选择?
Faas
以下是我找到的两个最佳选项:
- 使用服务的轮询机制。这种解决方案似乎效率低下,并且依赖于已弃用的方法(自API级别21):
getRunningTasks(int maximum)
- 使用Lollipop中引入的新的“应用程序使用统计信息”,但这种解决方案仅适用于运行Android > 5.0的设备。但我也想支持旧设备。我还搜索了一下应用程序启动或停止时是否有意图触发,但似乎没有none(请参见摘要)。这篇文章证实了这一点。此外,我发现了一个类:ActivityLifecycleCallbacks,它在活动状态更改时获取回调。但这仅适用于内部(即在您自己的应用程序中阅读)使用。
因此,我的想法是在运行版本低于棒棒糖的设备上使用服务来轮询当前前台应用程序,并在运行棒棒糖或更高版本的设备上使用新的API。但是,这个“服务”想法是最好的选择吗?因为如我之前所说,它似乎效率低下会耗费电池?也许有更好的选择?
Faas