在Doze模式下重复前台服务中的任务

时间:2018-05-21 09:41:16

标签: android alarmmanager android-jobscheduler firebase-job-dispatcher android-doze

我正在开发一个应用程序,在这个应用程序中我必须以固定的间隔执行一些重复任务(让我们说在2分钟之后),即使在打盹模式下也应该完成。我的观察结果如下 -

  1. 使用警报(使用RTC标志)执行重复任务并不准确。 Android系统批量报警。如果我们使用RTC_WAKEUP,那么它比RTC更好,但它在Android Vitals中显示WAKEUP计数并不好。
  2. Jobschedulers很有用,但不会像2分钟那样用于较短的间隔。我曾尝试使用Firebase Jobdispatcher,但这也不是很准确,我用2分钟的触发时间启动了Job,但是从10-20分钟开始。
  3. 使用处理程序和计时器在前台服务中重复任务。在此方案中,前台服务继续在打盹模式下运行,但处理程序和计时器停止重复任务。我读到了Handlers.postDelayed(),发现这也受打盹模式的影响。
  4. 我不想为这项重复任务获得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 个答案:

答案 0 :(得分:0)

并不是一个直接的答案,但仍然-我需要在前台服务中每分钟安排一次操作(请稍等一会儿。)

幸运的是,我也在该前台服务中捕获了传感器,我进行了 onSensorChanged 事件检查,是否经过了正确的时间,并在需要时采取了行动。