【问题标题】:WorkManager or AlarmManager for a daily request-then-notification work?WorkManager 或 AlarmManager 用于每日请求然后通知工作?
【发布时间】:2020-03-24 23:18:19
【问题描述】:

这是用例:用户设置具有特定时间的每日通知。在指定时间,发出网络请求以获取一些数据,然后使用检索到的数据显示通知。我不确定是否应该使用 AlarmManager 或 WorkManager 来实现这个用例。

据我了解,AlarmManager 最适合在精确的时间进行调度。但是如果没有网络,作业就会失败,我更喜欢推迟作业以尊重网络约束,而不是执行失败。对于这种类型的受限工作,在保证最终执行的情况下,WorkManager 看起来是最好的解决方案,它使用带有初始延迟的 OneTimeWorkRequest,以便在正确的时间执行。

【问题讨论】:

    标签: android alarmmanager android-workmanager


    【解决方案1】:

    比较 AlarmManager 和 WorkManager,WorkManager 获胜的原因如下:

    1) 从 Kitkat 开始的 AlarmManager,可以通过 OS 移动警报以减少设备的唤醒,从而减少电池使用量。 更多详情请查看official documentation

    2) 由于您不打算为通知定义特定时间,我的意思是在这里您不会在特定时间(可能是下午 3:00)使用 Calender,请使用 WorkManager,因为您在 WorkManager 中有 PeriodicWorkRequest。 请注意,您的 PeriodicWorkRequest 不得少于 15 分钟。 检查official documentation 中的 PeriodicWorkRequest

    3) WorkManager 现在替换了后台作业、JobScheduler、Firebase JobDispatcher 的所有 API。

    4) WorkManager 与协程完美配合

    这是我的拙见,如果您有任何疑问,请回复。

    快乐编码?

    【讨论】:

      猜你喜欢
      • 2018-10-25
      • 1970-01-01
      • 2020-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-25
      相关资源
      最近更新 更多