用于重复性后台工作的警报管理器或工作管理器
Alarm Manager or Work Manager for Recurring Background Work
我无法决定是否 运行 使用警报管理器或工作管理器进行一些重复性后台工作:
- 这项工作将包括房间数据库操作,因此我需要访问 Dao 才能完成我的工作。
- 它将以固定的时间间隔(每小时、每天、每周、每月等)重复出现
- 我需要为重复间隔设置开始日期和时间。
- 工作将重复进行,直到被用户取消
- 如果用户在应该安排工作时使用应用程序,我希望工作立即完成。如果用户不在应用程序上(应用程序在后台或设备关闭),我不关心工作是否在预定时间后完成,只要它至少在用户下次打开时开始应用程序。
- 工作需要在设备重启和应用程序重启后按计划继续。
这主要取决于您的任务的重要性。
https://developer.android.com/guide/background 是一个非常好的切入点,可以帮助您选择您应该使用的对象。
WorkManager 是处理后台工作的现代通用方法,适合大多数 use-cases,它会在设备重启或应用程序崩溃后自动重新安排工作,并且在电池使用方面非常高效.
由于 WorkManager 尊重 Android 的休眠模式,它不保证工作会准时完成,但它确实保证您的工作会在特定时间范围内完成.
另一方面,AlarmManager 能够运行 准时准确地工作。但这意味着设备将在您使用 AlarmManager 安排的工作到期时唤醒。这会耗尽电池电量,您的应用可能会在设备运行状况面板中显示为 battery-draining。
但如上文所述,尽可能使用 WorkManager。 AlarmManager 应该只用于例如time-sensitive 日历通知。
对于经常性的后台工作,AlarmManger 不适合。顾名思义,它的目的是在准确的时间通知系统一个事件。就像即使人睡着了也会叫醒人的物理闹钟一样,AlarmManager 会将设备从休眠模式唤醒,这将导致更多的电量使用。适用于设置余数之类的场合,比如用户可能自己设置的日历事件。
另一方面,WorkManager 旨在执行后台处理或持续存在的工作。 Workmanager 对于重复性任务效率更高,尤其是因为它允许您设置约束来确定何时开始或停止后台工作。
查看 link 形式的 WorkManger 官方文档:
workmanager architecture
tabular comparison between the two
我无法决定是否 运行 使用警报管理器或工作管理器进行一些重复性后台工作:
- 这项工作将包括房间数据库操作,因此我需要访问 Dao 才能完成我的工作。
- 它将以固定的时间间隔(每小时、每天、每周、每月等)重复出现
- 我需要为重复间隔设置开始日期和时间。
- 工作将重复进行,直到被用户取消
- 如果用户在应该安排工作时使用应用程序,我希望工作立即完成。如果用户不在应用程序上(应用程序在后台或设备关闭),我不关心工作是否在预定时间后完成,只要它至少在用户下次打开时开始应用程序。
- 工作需要在设备重启和应用程序重启后按计划继续。
这主要取决于您的任务的重要性。
https://developer.android.com/guide/background 是一个非常好的切入点,可以帮助您选择您应该使用的对象。
WorkManager 是处理后台工作的现代通用方法,适合大多数 use-cases,它会在设备重启或应用程序崩溃后自动重新安排工作,并且在电池使用方面非常高效.
由于 WorkManager 尊重 Android 的休眠模式,它不保证工作会准时完成,但它确实保证您的工作会在特定时间范围内完成.
另一方面,AlarmManager 能够运行 准时准确地工作。但这意味着设备将在您使用 AlarmManager 安排的工作到期时唤醒。这会耗尽电池电量,您的应用可能会在设备运行状况面板中显示为 battery-draining。
但如上文所述,尽可能使用 WorkManager。 AlarmManager 应该只用于例如time-sensitive 日历通知。
对于经常性的后台工作,AlarmManger 不适合。顾名思义,它的目的是在准确的时间通知系统一个事件。就像即使人睡着了也会叫醒人的物理闹钟一样,AlarmManager 会将设备从休眠模式唤醒,这将导致更多的电量使用。适用于设置余数之类的场合,比如用户可能自己设置的日历事件。
另一方面,WorkManager 旨在执行后台处理或持续存在的工作。 Workmanager 对于重复性任务效率更高,尤其是因为它允许您设置约束来确定何时开始或停止后台工作。
查看 link 形式的 WorkManger 官方文档: workmanager architecture tabular comparison between the two