WorkerManager是一种在应用程序中实现警报/提醒功能的可行方法吗?

Che*_*eng 10 android android-architecture-components android-workmanager

我们注意到AlarmManagerCompat,由于AlarmManager不同版本的操作系统中的行为不同,仅在我们的应用程序中实现警报/提醒功能并不是一种可靠的方法.(例如,打盹模式)

最初,我们计划使用Evernote的android-job库来帮助我们在应用程序中实现警报/提醒功能.

但是,在此过程中,我们也注意到谷歌刚刚发布WorkerManager.

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

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

我想知道,WorkerManager实现这样的功能有多可靠?有人尝试过吗?我们的目标是API 15及更高版本.

ian*_*ake 12

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

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

由于您的确切定时闹钟可以在设备打瞌睡时发生,因此您的应用不应要求网络连接发布您的闹钟/提醒通知.理想情况下,信息应该在PendingIntent自身中,甚至不需要任何数据库提取/等.

  • @CommonsWare - 第一个警报仍然是准确的,它们之后只是速率限制所以它看起来好像第二个是不精确的 (2认同)
  • Android Job在较新版本的Android上使用JobScheduler(由于后台限制,它必须使用).由于JobScheduler在设备打瞌睡时永远不会开火,因此在打瞌睡期间需要点火的东西(即具有确切时间的任何东西)都不合适. (2认同)