У меня есть BroadcastReceiver
, который переписывает аварийные сигналы на такие события, как загрузка и изменение времени. Но когда время прошло триггерное время сигнала тревоги (например, когда пользователь вручную меняет время от настроек), AlarmManager
срабатывает будильник, прежде чем я смогу добавить день, чтобы перенести мой сигнал. Как я могу избежать этого?
В настоящее время я использую методы set и add Calendar
для планирования аварийных сигналов.
for (int dayOfWeek = Calendar.SUNDAY; dayOfWeek <= Calendar.SATURDAY; dayOfWeek++) {
if (alarm.getRepeatingDay(dayOfWeek - 1) && dayOfWeek >= nowDay &&
!(dayOfWeek == nowDay && alarm.timeHour < nowHour) &&
!(dayOfWeek == nowDay && alarm.timeHour == nowHour && alarm.timeMinute <= nowMinute)) {
calendar.set(Calendar.DAY_OF_WEEK, dayOfWeek);
alarmSet = true;
break;
}
}
if (!alarmSet) {
for (int dayOfWeek = Calendar.SUNDAY; dayOfWeek <= Calendar.SATURDAY; dayOfWeek++) {
if (alarm.getRepeatingDay(dayOfWeek - 1) && dayOfWeek <= nowDay) {
calendar.set(Calendar.DAY_OF_WEEK, dayOfWeek);
calendar.add(Calendar.WEEK_OF_YEAR, 1);
break;
}
}
}
Это также указано в документах:
Если указанное время триггера в прошлом, срабатывание будильника немедленно.
Как можно изменить это поведение?