WorkerManager 是在应用程序中实现 alarm/reminder 功能的可靠方法吗?

Is WorkerManager a realiable way to implement alarm/reminder feature in the app?

我们注意到 AlarmManagerCompat 本身并不是在我们的应用程序中实现警报/提醒功能的可靠方法,因为 OS 的不同版本中的行为不同 AlarmManager。 (例如,打瞌睡模式)

最初,我们计划使用 Evernote 的 android-job 库,以帮助我们在应用程序中实现闹钟/提醒功能。

然而,一路走来,我们也注意到Google只是释放了WorkerManager

到目前为止,WorkerManager 对我们来说效果很好,当我们在应用程序退出后 运行 一些一次性后台作业(几乎立即,有互联网连接限制)时。

我们计划使用 WorkerManager 来实现警报/提醒功能。

我想知道,WorkerManager 实现这样的功能有多可靠?有人试过吗?我们的目标是 API 15 岁及以上。

WorkManager 不适用于任何必须在特定时间触发的作业,包括 WorkManager 使用的作业或 android-job,在设备打瞌睡时不会触发。

对于准确的时间,您绝对应该使用 AlarmManagerCompat,特别是 setExactAndAllowWhileIdle(),它会在所有 API 级别的指定时间触发警报。

由于您的确切定时闹钟可以并且将会在设备打瞌睡时发生,因此您的应用不应要求网络连接到 post 您的 alarm/reminder 通知。理想情况下,信息应该在 PendingIntent 本身,甚至不需要任何数据库 fetch/etc.