【发布时间】:2016-09-30 14:54:16
【问题描述】:
来自Optimizing for Doze and App Standby:
打瞌睡特别有可能影响 AlarmManager 的活动 警报和计时器管理,因为 Android 5.1(API 级别 22)中的警报 当系统处于打盹状态时,或更低不会触发。
为了帮助安排闹钟,Android 6.0(API 级别 23)引入了 两个新的 AlarmManager 方法:setAndAllowWhileIdle() 和 setExactAndAllowWhileIdle()。使用这些方法,您可以设置警报 即使设备处于打瞌睡状态也会触发。
那么,如果我需要在 Android 5.1 中设置确切时间的闹钟,即使是在打瞌睡期间,我该怎么办?不可能吗?
这是我的代码
if (noPreciseTime) {
alarmManager.set(AlarmManager.RTC_WAKEUP, now + interval, pendingIntent)
} else if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {
alarmManager.set(AlarmManager.RTC_WAKEUP, time, pendingIntent)
} else if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
alarmManager.setExact(AlarmManager.RTC_WAKEUP, time, pendingIntent)
} else {
alarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, time, pendingIntent)
}
【问题讨论】:
标签: android alarmmanager