警报没有唤醒电话

时间:2016-12-30 19:48:31

标签: android alarmmanager

我希望我的应用程序经常醒来。我用来设置闹钟的代码是:

AlarmManager alarmManager = (AlarmManager) getSystemService( Context.ALARM_SERVICE );
alarmManager.setExact( AlarmManager.RTC_WAKEUP, System.currentTimeMillis( ) + pollInterval, pendingIntent );

警报处理程序中有代码可以使用上面的代码重置警报。

问题在于,当手机处于深度睡眠状态时(例如,在凌晨时分),闹钟响起。

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

如果您使用的是Android 6.0或更高版本的手机,则必须处理Doze机制。因此,当手机处于睡眠状态时,AlarmManager将无法立即工作。文档说:

  

标准AlarmManager警报(包括setExact()和setWindow())   被推迟到下一个维护窗口。

  

如果您需要设置在Doze中触发的警报,请使用   setAndAllowWhileIdle()或setExactAndAllowWhileIdle()。

因此,只需尝试将setExactAndAllowWhileIdle()用于API> 22

文档here