2

AlarmManager在我们的应用程序中使用来设置在特定日期和时间设置的警报。现在最近很少有我们应用程序的用户抱怨这些警报没有弹出。此外,在 Android O 指南中,提到应用程序不应运行任何后台服务,而应切换到Firebase JobDispatcher. 我有以下 2 个问题

  1. 在我们的应用程序中,除了在指定的时间和日期向用户显示通知外,我们不执行任何后台任务。即使在这种情况下,我们是否应该切换到Firebase Jobdispatcher?
  2. 如果我们确实需要切换到JobDispatcher,如何将 Job 设置为在特定的日期和时间运行?
4

1 回答 1

0

因为您没有执行任何后台任务,例如网络请求或长时间运行的 CPU 操作,所以我认为您应该继续使用Alarm Manager.

现在最近很少有我们应用程序的用户抱怨这些警报没有弹出。

这是因为当打盹模式触发时,不能保证您的警报会被触发(请参阅)。

您可以做的是根据您对 API 级别 >= 23 的要求使用 AlarmManager 类中的方法setAndAllowWhileIdle()或方法。setExactAndAllowWhileIdle()

根据文档,这些适用于通知目的。 setAndAllowWhileIdle()文档:

类似set(int, long, PendingIntent),但即使系统处于低功耗空闲模式,也允许执行此警报。这种类型的警报只能用于实际需要在空闲时发出警报的情况——一个合理的例子是日历通知应该发出声音以便用户知道它。当警报发出时,应用程序也将被添加到系统的临时白名单中大约 10 秒,以允许该应用程序获取更多的唤醒锁以完成其工作。

于 2017-12-13T10:46:11.910 回答