在打盹模式下在前台服务中重复任务
Posted
技术标签:
【中文标题】在打盹模式下在前台服务中重复任务【英文标题】:Repeating Task in Foreground service in Doze mode 【发布时间】:2018-10-30 22:33:49 【问题描述】:我正在开发一个应用程序,在该应用程序中,我必须以固定的时间间隔(比如说 2 分钟后)执行一些重复任务,即使在打盹模式下也应该完成。下面提到了我的观察 -
-
使用警报(使用 RTC 标志)执行重复任务不准确。 android系统批量报警。如果我们使用 RTC_WAKEUP 那么它比 RTC 更好,但它在 Android Vitals 中显示 WAKEUP 计数不好。
作业调度器很有用,但在 2 分钟等较短的时间间隔内不起作用。我曾尝试过 Firebase Jobdispatcher,但这也不是很准确,我以 2 分钟的触发时间启动 Job,但它在 10-20 分钟之间变化。
使用处理程序和计时器在前台服务中重复任务。在这种情况下,前台服务继续以打盹模式运行,但处理程序和计时器停止重复任务。我阅读了有关 Handlers.postDelayed() 的信息,发现这也受打盹模式的影响。
我不想为这个重复的任务获取 WAKELOCK。
有人可以建议我一些更好/更干净的方法,我们可以在打瞌睡模式下做短间隔重复任务吗?
供参考-
Android: What is the best way to make repetitive Background Tasks Android Oreo ready?
How does doze mode affect background/foreground services, with/without partial/full wakelocks?
【问题讨论】:
有什么更新吗?我也想和你一样 【参考方案1】:不完全是一个直接的答案,但仍然 - 我需要在前台服务中每分钟安排一次操作(给或花一秒钟)。
幸运的是,我也在这个前台服务中捕获了传感器,我让 onSensorChanged 事件检查是否已经过了正确的时间并在需要时采取行动。
【讨论】:
以上是关于在打盹模式下在前台服务中重复任务的主要内容,如果未能解决你的问题,请参考以下文章