Android - 在特定日期和时间在Firebase作业计划程序中运行作业

时间:2017-12-13 09:11:48

标签: android firebase android-8.0-oreo firebase-job-dispatcher

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

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

1 个答案:

答案 0 :(得分:0)

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

  

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

这是因为当doze mode触发时,无法保证您的闹钟会被触发(请参阅this)。

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

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

  

set(int, long, PendingIntent)类似,但此警报将被允许   即使在系统处于低功耗空闲模式时也会执行。这类   警报只能用于实际需要的情况   在空闲时警报会响起 - 这是一个合理的例子   对于应该发出声音的日历通知,以便用户   意识到这一点。调度警报时,还会添加应用程序   到系统的临时白名单大约10秒钟   允许该应用程序获取进一步的唤醒锁定   完成它的工作。