首页 > 解决方案 > Android 8.0:保持后台服务活跃

问题描述

相信大家已经熟悉 Android 8.0 及更高版本( https://developer.android.com/about/versions/oreo/background.html#services)的“后台服务限制” 。

我现在有一个非常特殊的问题。我的应用程序适用于一个非常具体的用例。应用程序每分钟检查服务器上的某些数据,如果出现错误值,则会立即提醒用户。显然到目前为止,应用程序以后台服务的形式运行,我的客户从不关心(明显的)电池消耗来自每分钟执行的复杂计算。

现在,整个想法是应用程序需要保持活力、工作和在后台(即使有永久通知,我也没有什么可隐藏的),不管任何事情!如果手机处于最深的睡眠状态 - 服务需要继续运行。如果剩余 2% 的电池电量 - 服务需要继续运行。到目前为止,我设法使用警报和“监护服务”来实现这一点,这可以防止在安装应用程序时以任何方式停止后台服务。但是现在,有了 Android“0”——要走的路是什么?是否有一个 JobScheduler 可以保证以给定的速率(每分钟)执行,而不管任何事情?

SMS / Phone、WhatsApp 和类似的应用程序如何实现“无论如何都清醒”的状态?

标签: androidbackground-service

解决方案


这就是谷歌告诉我们的。

一个过程不是永远的。如果你觉得你需要你的前台服务来永久保持活力,那么这表明前台服务不是正确的答案。

Android 上的有效前台服务

我认为您可以使用 WorkManager 使用重复性任务,或者更改架构并使用 FCM。无论如何,谷歌不会让我们像以前那样工作。


推荐阅读