【发布时间】:2019-08-16 01:46:19
【问题描述】:
相信大家已经熟悉 Android 8.0 及更高版本 (https://developer.android.com/about/versions/oreo/background.html#services) 施加的“后台服务限制”。
我现在遇到一个非常特殊的问题。我的应用程序适用于一个非常具体的用例。应用程序每分钟检查服务器上的某些数据,如果出现错误值,则会立即提醒用户。显然,到目前为止,应用程序以后台服务的形式运行,我的客户从不关心(明显的)电池消耗来自每分钟执行的复杂计算。
现在,整个想法是,无论任何事情,应用程序都需要保持活力、工作和在后台(即使有永久通知,我也没有什么可隐藏的)!如果手机处于最深的睡眠状态 - 服务需要继续运行。如果剩余 2% 的电池电量 - 服务需要继续运行。到目前为止,我设法使用警报和“监护服务”来实现这一目标,这可以防止在安装应用程序时以任何方式停止后台服务。但是现在,有了 Android“0”——要走的路是什么?是否有一个 JobScheduler 可以保证以给定的速度(每分钟)执行任何事情?
短信/电话、WhatsApp 和类似应用如何实现“无论如何都清醒”的状态?
【问题讨论】:
-
我认为您可以从架构修订中受益。您如何使用 AWS Lambda 运行每分钟触发的事件规则来监控服务器的状态。然后,如果出现问题,您可以触发一个事件,该事件通过传统的推送通知发送到用户的设备。
-
我花了将近两个星期的时间才成功。您必须编写一个扩展服务类的后台服务。那么你必须发出通知并将其显示为前台,只有这样 Android O 才不会杀死你的服务。如果这还不够,请知道您是否需要详细的答案。
-
Faisal 类似“粘性”后台服务? “打瞌睡”模式怎么样? user3474985:不幸的是,我无法编辑服务器端应用程序,因为它由其他公司管理,并为许多非 Android 服务提供相同的 API。我处于“修复它,我们不在乎”的情况,我的应用程序运行了多年,现在在一些新设备上它不再可靠地运行了。
-
没错!实现这一点,Android O 没有其他方法。或者据我所知没有其他方法 cz 我花了这么多时间。
-
我刚刚阅读了 Doze 模式的文档。那么,您是否担心您的服务是否因打盹模式而终止?如果您从服务中返回粘性,如果系统终止它,它会自行重新启动,所以不用担心。顺便说一句,我在运行 2/3 周时测试了我的服务,它运行良好。
标签: android background-service