每日请求-通知工作,使用WorkManager还是AlarmManager?

3
这是一个使用案例:用户设置每天特定时间的日常提醒。在指定时间,会发起网络请求以获取一些数据,然后使用检索到的数据显示通知。我不确定应该使用AlarmManager还是WorkManager来实现此用例。
据我了解,AlarmManager最适合在精确时间安排任务。但是如果没有网络,任务将失败,我更喜欢任务被延迟以遵守网络限制,而不是在执行时失败。对于这种受限工作类型,带有最终执行保证的WorkManager似乎是最好的解决方案,使用带有初始延迟的OneTimeWorkRequest,以便在正确时间执行。
1个回答

3
比较AlarmManager和WorkManager,WorkManager有以下几个优点:
1) AlarmManager从Kitkat开始,可能会由操作系统将闹钟向后移动,以降低设备的唤醒次数,以减少电池使用。有关更多详细信息,请查看官方文档
2) 如果您不打算为通知定义特定时间,也就是说,您不会使用Calendar来设置一个特定的时间,比如下午3点钟,请使用工作管理器(WorkManager),因为在WorkManager中有PeriodicWorkRequest。请注意,不允许将PeriodicWorkRequest设为少于15分钟。请参阅官方文档中的PeriodicWorkRequest。
3) WorkManager现在取代了所有后台作业的API,包括JobScheduler、Firebase JobDispatcher。
4) WorkManager与Coroutines完美协同工作。
这是我的个人意见,如果您有任何疑问,请回复。
编程愉快!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接