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

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

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

  1. 使用闹钟(使用 RTcflags)执行重复任务不准确。 Android系统批量报警。如果我们使用 RTC_WAKEUP 那么它比 RTC 更好,但它在 Android Vitals 中显示 WAKEUP 计数,这不太好。
  2. 作业调度程序很有用,但对于 2 分钟等较小的间隔不起作用。我曾尝试过 Firebase Jobdispatcher,但这也不是很准确,我以 2 分钟的触发时间启 Action 业,但时间在 10-20 分钟之间变化。
  3. 使用处理程序和计时器在前台服务中重复任务。在这种情况下,前台服务继续在 Doze 模式下运行,但处理程序和计时器停止重复任务。我阅读了有关 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?

最佳答案

不完全是直接答案,但仍然 - 我需要在前台服务中每分钟安排一个操作(稍等一下)。

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

关于android - Doze 模式下在前台服务中重复任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50445965/

相关文章:

android - 获取建筑物的位置

android - 如何在 ListView 自定义适配器中使用 RadioGroup?

Android:安排应用程序以重复警报开始不起作用

Android JobScheduler 错误 : delay is increased after reboot (param minimumLatency)

android - android JobScheduler 可以替代 RxJava 吗?

android - 牛轧糖/奥利奥的 JobScheduler

php - 在 Android 应用程序中使用 post 方法时,mysql 转义字符串是否足够

android - Android 应用程序的 Spring 安全性

java - AlarmManager.setAlarmClock() 未在 Android Pie 的右上角显示警报

Android 警报管理器在 5 秒后重复并忽略间隔时间