Объект AlarmManager после выключения и включения телефона

В моем приложении я установил будильник

AlarmManager alarmMgr = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE); ... PendingIntent pendingIntent = PendingIntent.getBroadcast(context, id, intent, PendingIntent.FLAG_UPDATE_CURRENT); ... alarmMgr.set(AlarmManager.RTC_WAKEUP, time.getTimeInMillis(), pendingIntent); 

Он отлично работает, если я не выключу и не включу телефон.

Чтобы быть более конкретным, допустим, в 10:20, я поставил будильник на 10:22, и я выключился и включил телефон в 10:21, сигнал тревоги не будет работать.

Что может быть проблемой? Является ли это широковещательной проблемой ожидающего запроса или мне нужно установить некоторые флаги объекта alarmManager, чтобы он работал в таких условиях?

Документация о AlarmManager говорит, что:

Зарегистрированные аварийные сигналы сохраняются, когда устройство спит (и при необходимости может разбудить устройство, если оно отключится в течение этого времени), но будет очищено, если оно выключено и перезагружено .

Похоже, что AlarmClock, включенный по умолчанию Android, работает даже после перезагрузки.

Чтобы поддерживать работу будильника после перезагрузки, необходимо запустить приложение при загрузке и настроить все аламы снова с помощью AlarmManager. (На самом деле вы можете просто настроить свои сигналы тревоги с помощью широковещательной передачи, а не запускать приложение)

Вот вопрос StackOverflow, касающийся обеда приложения при запуске.

Вы также проверяете, как по умолчанию AlarmClock делает это, читая из источника. Вы можете прочитать и скачать его здесь