用于重复后台工作的警报管理器或工作管理器

Don*_*bin 1 android alarmmanager android-room android-workmanager

我无法决定是否使用警报管理器或工作管理器运行一些重复的后台工作:

  • 这项工作将包括房间数据库操作,因此我需要访问 Dao 来完成我的工作。
  • 它将以固定的时间间隔重复出现(每小时、每天、每周、每月等)
  • 我需要设置重复间隔的开始日期和时间。
  • 该工作将重复进行,直到用户取消为止
  • 如果用户在应该安排工作时使用该应用程序,我希望立即完成工作。如果用户不在应用程序上(应用程序在后台或设备已关闭),我不在乎工作是否在预定时间之后完成,只要它至少在用户下次打开时启动即可该应用程序。
  • 设备重新启动和应用程序重新启动后,工作需要按计划继续。

Jay*_*ymn 5

对于重复的后台工作,AlarmManger 不适合。顾名思义,它的目的是在精确的时间向系统通知事件。就像物理闹钟即使在睡觉时也会叫醒人一样,AlarmManager 会将设备从瞌睡模式中唤醒,这将导致更多的电量使用。它适用于设置余数的场合,例如用户可能自己设置的日历事件。

另一方面,WorkManager 旨在执行后台处理或持续存在的工作。Workmanager 对于重复任务来说更加高效,特别是它允许您设置约束来确定何时启动或停止后台工作。

检查 WorkManger 官方文档的链接: workmanager 架构 两者之间的表格比较