#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. В моем случае это будет неэффективно, потому что это повторяющийся сигнал тревоги, и несколько сигналов тревоги действуют одновременно для разных событий.