Android Alarm В чем разница между четырьмя типами тревоги, которые предоставляет AlarmManager и когда использовать что?

Я хочу знать разницу между RTC, RTC_WAKEUP, ELAPSED_REALTIME, ELAPSED_REALTIME_WAKEUP .
Я хочу написать приложение для сигнализации, в котором я установлю будильник и закрою приложение и ожидаю сигнала тревоги в течение установленного времени.
Будут несколько аварийных сигналов. Прямо сейчас я пишу для эмулятора, но позже буду тестировать на устройстве. В эмуляторе, как только я устанавливаю будильник и закрываю эмулятор и перезапускаю его, он будет очищен, как я нахожу в RTC, RTC_WAKEUP и ELAPSED_REALTIME. Я запутался. Должен ли я использовать ELAPSED_REALTIME_WAKEUP? Я не видел никакого учебника, использующего ELAPSED_REALTIME_WAKEUP. пожалуйста, объясни. Благодарю.

Вы можете прочитать следующее:

http://developer.android.com/reference/android/app/AlarmManager.html

У вас есть разница между сигналами тревоги

ELAPSED_REALTIME

Время будильника в SystemClock.elapsedRealtime () (время с момента загрузки, включая спящий режим). Этот сигнал не разбудит устройство; Если он отключается, когда устройство спит, оно не будет доставлено до следующего пробуждения устройства.

ELAPSED_REALTIME_WAKEUP

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

RTC

Время будильника в System.currentTimeMillis () (время настенных часов в UTC). Этот сигнал не разбудит устройство; Если он отключается, когда устройство спит, оно не будет доставлено до следующего пробуждения устройства.

RTC_WAKEUP

Время будильника в System.currentTimeMillis () (время настенных часов в UTC), которое пробудит устройство, когда оно погаснет.

Типы сигналов тревоги:

  • ELAPSED_REALTIME – Запускает ожидающее намерение через указанный промежуток времени с момента загрузки устройства. Если устройство спит, оно срабатывает, когда устройство снова проснется.
  • ELAPSED_REALTIME_WAKEUP – Запускает ожидающее намерение через указанный промежуток времени с момента загрузки устройства. Он просыпается, если он спит.
  • RTC – запускает ожидающее намерение в указанное время. Если устройство спит, оно не будет доставлено до следующего пробуждения устройства.
  • RTC_WAKEUP – Запускает ожидающее намерение в указанное время, пробуждая устройство, если спит.

Для аварийных сигналов есть два общих типа часов: «Истекшее реальное время» и «Часы реального времени» (RTC). Истекшее реальное время использует «время с момента загрузки системы» в качестве эталона, а часы реального времени используют время UTC (настенные часы). Это означает, что прошедшее реальное время подходит для установки тревоги в зависимости от времени прохождения (например, тревоги, которая срабатывает каждые 30 секунд), так как на нее не влияет часовой пояс / локаль. Тип часов реального времени лучше подходит для сигналов тревоги, зависящих от текущей локали.

Источник: https://developer.android.com/training/scheduling/alarms.html

С сайта вы можете получить разницу между 4-мя константами. Ниже приведен пример аварийного сигнала настройки

Calendar mCalendar = Calendar.getInstance(); mCalendar.add(Calendar.SECOND, 20); Intent intent_Timer = new Intent(TimerEvents.this, AlarmReceiver.class); intent_Timer.putExtra("alarm_message", "Drax Rules!!!"); // In reality, you would want to have a static variable for the request // code instead of 192837 PendingIntent sender = PendingIntent.getBroadcast(this, 192837, intent_Timer, PendingIntent.FLAG_UPDATE_CURRENT); // Get the AlarmManager service AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE); am.set(AlarmManager.RTC_WAKEUP, mCalendar.getTimeInMillis(), sender); 

Надеюсь, это будет полезно для вас