Я хочу знать разницу между 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), которое пробудит устройство, когда оно погаснет.
Типы сигналов тревоги:
Для аварийных сигналов есть два общих типа часов: «Истекшее реальное время» и «Часы реального времени» (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);
Надеюсь, это будет полезно для вас