Вы можете указать, будет ли устройство активироваться при планировании AlarmManager .
Цитата из документации:
ELAPSED_REALTIME
Время будильника в SystemClock.elapsedRealtime () (время с момента загрузки, включая спящий режим). Этот сигнал тревоги не будит устройство ;если он гаснет, когда устройство спит, он не будет доставлен до следующего пробуждения устройства.
ELAPSED_REALTIME_WAKEUP
Время будильника в SystemClock.elapsedRealtime () (время после загрузки, включая спящий режим), , который разбудит устройство, когда оно выключится .
То же самое касается AlarmManager.RTC
и AlarmManager.RTC_WAKEUP
Так что вы, вероятно, хотите один издва AlarmManager.RTC
или AlarmManager.ELAPSED_REALTIME
.Они продолжаются, когда устройство находится в активном состоянии, и останавливаются, когда устройство находится в режиме ожидания.Если этот сигнал тревоги срабатывает, когда устройство спит, он будет доставлен, когда пользователь снова включит устройство, именно то, что вы хотите.И нет, запланированные тревоги AlarmManagers вообще не отменяются автоматически.
Часть, упомянутая здесь, может быть найдена в этой части руководства , в частности в этой строке:
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 20*1000, pendingIntent);