android - Android 8.0:保持后台服务活跃
问题描述
相信大家已经熟悉 Android 8.0 及更高版本( https://developer.android.com/about/versions/oreo/background.html#services)的“后台服务限制” 。
我现在有一个非常特殊的问题。我的应用程序适用于一个非常具体的用例。应用程序每分钟检查服务器上的某些数据,如果出现错误值,则会立即提醒用户。显然到目前为止,应用程序以后台服务的形式运行,我的客户从不关心(明显的)电池消耗来自每分钟执行的复杂计算。
现在,整个想法是应用程序需要保持活力、工作和在后台(即使有永久通知,我也没有什么可隐藏的),不管任何事情!如果手机处于最深的睡眠状态 - 服务需要继续运行。如果剩余 2% 的电池电量 - 服务需要继续运行。到目前为止,我设法使用警报和“监护服务”来实现这一点,这可以防止在安装应用程序时以任何方式停止后台服务。但是现在,有了 Android“0”——要走的路是什么?是否有一个 JobScheduler 可以保证以给定的速率(每分钟)执行,而不管任何事情?
SMS / Phone、WhatsApp 和类似的应用程序如何实现“无论如何都清醒”的状态?
解决方案
这就是谷歌告诉我们的。
一个过程不是永远的。如果你觉得你需要你的前台服务来永久保持活力,那么这表明前台服务不是正确的答案。
我认为您可以使用 WorkManager 使用重复性任务,或者更改架构并使用 FCM。无论如何,谷歌不会让我们像以前那样工作。
推荐阅读
- django - 如何在 Django 中将小部件添加到 UpdateView
- javascript - Javascript - 出现在预期之前的值
- math - 如何交换这个公式以获得相反的值?
- mysql - 外键约束格式不正确但未创建键
- tensorflow - 使用 None 将维度从 3D 扩展到 4D
- java - 如何在 FXML 语句中使用“%”符号
- google-closure-compiler - Closure 是否支持类似 `string[]` 的 JSDoc 数组语法?
- julia - 类型和结构的区别
- laravel - 在没有可见命令提示符窗口的情况下在 Windows 上自动启动 websocket 服务器
- python - 如何在回调中更新 VTK 渲染窗口的大小和位置?