我在我们的应用中使用AlarmManager
来设置在特定日期和时间设置的闹钟。现在,最近我们的应用程序的用户很少抱怨这些警报没有弹出。此外,在Android O指南中,提到应用不应运行任何后台服务,而应切换到Firebase
JobDispatcher
。我有以下2个问题
Firebase
Jobdispatcher
?JobDispatcher
,那么如何将Job设置为在特定的日期和时间运行?答案 0 :(得分:0)
由于您没有执行任何后台任务,如网络请求或长时间运行的CPU操作,我认为您应该继续使用Alarm Manager
。
现在,我们的应用程序的用户很少抱怨这些警报没有弹出。
这是因为当doze mode触发时,无法保证您的闹钟会被触发(请参阅this)。
您可以根据API级别> = 23的要求,使用AlarmManager类中的setAndAllowWhileIdle()
或setExactAndAllowWhileIdle()
方法。
根据文档,这些适用于通知目的。
setAndAllowWhileIdle()
文档:
与
set(int, long, PendingIntent)
类似,但此警报将被允许 即使在系统处于低功耗空闲模式时也会执行。这类 警报只能用于实际需要的情况 在空闲时警报会响起 - 这是一个合理的例子 对于应该发出声音的日历通知,以便用户 意识到这一点。调度警报时,还会添加应用程序 到系统的临时白名单大约10秒钟 允许该应用程序获取进一步的唤醒锁定 完成它的工作。