我希望我的应用程序经常醒来。我用来设置闹钟的代码是:
AlarmManager alarmManager = (AlarmManager) getSystemService( Context.ALARM_SERVICE );
alarmManager.setExact( AlarmManager.RTC_WAKEUP, System.currentTimeMillis( ) + pollInterval, pendingIntent );
警报处理程序中有代码可以使用上面的代码重置警报。
问题在于,当手机处于深度睡眠状态时(例如,在凌晨时分),闹钟响起。
有什么建议吗?
答案 0 :(得分:2)
如果您使用的是Android 6.0或更高版本的手机,则必须处理Doze机制。因此,当手机处于睡眠状态时,AlarmManager将无法立即工作。文档说:
标准AlarmManager警报(包括setExact()和setWindow()) 被推迟到下一个维护窗口。
和
如果您需要设置在Doze中触发的警报,请使用 setAndAllowWhileIdle()或setExactAndAllowWhileIdle()。
因此,只需尝试将setExactAndAllowWhileIdle()
用于API> 22
文档here