Несмотря на принятый в настоящее время и получивший отклик ответ, типы AlarmManager.ELAPSED_REALTIME * вместе с SystemClock.elapsedRealtime () всегда были более надежными, чем часы RTC для сигналов тревоги и времени.
Использование ELAPSED_REALTIME_WAKEUP с AlarmManager будетполагаться на монотонные часы, начинающиеся со времени загрузки ", и продолжает работать, даже когда процессор находится в режимах энергосбережения, поэтому это рекомендуемая основа для общего интервала времени ".Таким образом,
alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime()
+ 60*1000, pendingIntent);
вызовет ваш PendingIntent за 1 минуту (60 * 1000 миллисекунд).
Принимая во внимание, что AlarmManager.RTC_WAKEUP - это стандартное время "стены" в миллисекундах с моментаэпоха.Таким образом,
alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()
+ 60*10000, pendingIntent);
может также вызвать тревогу через 60 секунд, но ненадежно, потому что, как отмечено в документации SystemClock :
Стеначасы могут быть установлены пользователем или телефонной сетью (см. setCurrentTimeMillis (long)), поэтому время может непредсказуемо прыгать назад или вперед.Эти часы следует использовать только тогда, когда важна переписка с реальными датами и временем, например, в приложении с календарем или будильником.Для измерения интервала или истекшего времени следует использовать другие часы.Если вы используете System.currentTimeMillis (), рассмотрите возможность прослушивания трансляций ACTION_TIME_TICK, ACTION_TIME_CHANGED и ACTION_TIMEZONE_CHANGED, чтобы узнать, когда время меняется.
Кроме того, вопрос касается только * _WAKEUP alarсм. также документацию AlarmManager об этом, чтобы убедиться, что вы понимаете, что предоставляют сигналы будильника и не будильника.