Проблема со временем выполнения Android AlarmManager

#android #broadcastreceiver #alarmmanager

#Android #broadcastreceiver #alarmmanager

Вопрос:

Я установил AlarmManager, который будет повторно подавать сигнал тревоги через определенное время. Для этого я использовал следующий код.

 Intent intent = new Intent(ViewDoughnut.this, NotificationMessage.class);
PendingIntent sender = PendingIntent.getBroadcast(ViewDoughnut.this, 0, intent,PendingIntent.FLAG_CANCEL_CURRENT);

AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
am.setRepeating(AlarmManager.RTC_WAKEUP,nextAlarmTime, alarmInterval, sender);
  

Теперь, чтобы выполнить надлежащую работу во время будильника, я создал следующий класс, расширяющий BroadcastReceiver. Теперь мне нужно время в миллисекундах, когда в этом классе должна выполняться аварийная работа. Как это получить?

 public class NotificationMessage extends BroadcastReceiver {
    // Display an alert that we've received a message.
    // @Override
    public void onReceive(Context context, Intent intent) {

        // here I need the time when the alarm should execute.
    }
}
  

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

Ответ №1:

Вы могли бы создать класс, производный от Application, который содержит все глобальные переменные. Затем просто установите переменную long для удержания времени перед инициализацией будильника

Комментарии:

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