建议一种切实可行的方法,在应用关闭后继续运行

时间:2019-06-07 15:35:18

标签: android android-notifications background-process android-workmanager

我正在记录加速度计的输出。

在关闭应用程序(在后台运行应用程序)之后,谁能推荐一种可靠的方法来监视onSensorChanged

WorkManager
我已经尝试过WorkManagerWorkManager似乎仅在打开应用程序时运行。我读到这可能是特定于设备的,因为某些设备会在关闭应用程序时强制停止应用程序运行,或者阻止其他任务在应用程序关闭后执行。

sticky-notifications
我对使用sticky-notifications感到好奇,尽管这不是我的首选。我现在正在研究此选项。我注意到一些实现此选项的应用程序。不利的一面是粘性通知可能会令人讨厌,并且用户可能会禁用sticky-notifications

其他选项?

2 个答案:

答案 0 :(得分:1)

如果要在后台运行,则应使用服务。但是可能Android不允许这样做,因为在后台继续收听传感器会消耗过多的电池。主要在Android P上,它对电池的消耗更加严格。

答案 1 :(得分:-1)

在这种情况下,WorkManager不是正确的解决方案,因为Worker的执行限制为10分钟,然后操作系统将其停止。但是,除了时间限制之外,WorkManager是针对其他用例开发的,因此使用类似的东西(在接近10分钟的限制时使用一些技巧重新安排工作人员的时间)似乎是在与库设计作斗争。要了解WorkManager旨在解决的用例背后的问题,可以查看以下博客:Introducing WorkManager

可以选择前台服务,但恐怕持续监视传感器会对设备的电池寿命产生非常严重的影响。有关可用选项的更多信息,要在后台运行代码,您可以检查以下博客:Modern background execution in Android

根据需要对传感器数据进行处理的另一种方法是使用Activity Recognition API

  

您可以通过使用PendingIntent来告诉API如何传递结果,从而无需出于活动检测目的而在后台不断运行服务。您的应用会从API接收相应的Intent,提取检测到的活动,然后决定是否应采取措施。

相关问题