这是用例:用户设置在特定时间的每日通知。在指定的时间,发出网络请求以获取一些数据,然后使用检索到的数据显示通知。我不确定是否应该使用AlarmManager或WorkManager来实现此用例。
据我了解,AlarmManager最适合在精确的时间进行调度。但是如果没有网络,该作业将失败,我宁愿推迟执行该作业以遵守网络约束,也不愿执行失败。对于这种受限工作,并保证最终执行,WorkManager看起来是最佳解决方案,它使用具有初始延迟的OneTimeWorkRequest以便在正确的时间执行。
比较AlarmManager和WorkManager,WorkManager出于某些原因获胜:
1)从Kitkat开始的AlarmManager,操作系统可能会转移警报,以减少设备的唤醒时间,从而减少电池使用量。检查official documentation了解更多详细信息。
2)由于您不会为通知定义特定的时间,我的意思是在这里您不会在特定时间(例如3:00 PM)使用日历,请使用WorkManager,因为您在WorkManager中具有PeriodicWorkRequest。请注意,您不得让PeriodicWorkRequest少于15分钟。检查official documentation中的PeriodicWorkRequest
3)现在,WorkManager替换了后台作业,JobScheduler,Firebase JobDispatcher的所有API。
4)WorkManager与协同程序完美配合
如果您有任何疑问请回覆,这是我的拙见。
快乐编码🤓