Я устанавливаю один повторяющийся сигнал, который срабатывает каждый день в 9 часов вечера. Поэтому я устанавливаю будильник сразу после входа в систему. Вот мой код.
AlarmManager alarmManager = (AlarmManager) applicationContext.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(applicationContext, LogoutReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(applicationContext, 100, intent, PendingIntent.FLAG_UPDATE_CURRENT);
Calendar calendar = Calendar.getInstance();
int hourOfTheDay = new LocaleTranslation().getIntValue(KeysConstant.AUTO_LOGOUT_TIMER_VALUE, Constants.AUTO_LOGOUT_HOUR_OF_DAY_VALUE);
int minutes = new LocaleTranslation().getIntValue(KeysConstant.AUTO_LOGOUT_TIMER_MINUTE_VALUE, Constants.AUTO_LOGOUT_MINUTE_VALUE);
int seconds = new LocaleTranslation().getIntValue(KeysConstant.AUTO_LOGOUT_TIMER_SECOND_VALUE, Constants.AUTO_LOGOUT_SECOND_VALUE);
calendar.set(Calendar.HOUR_OF_DAY, hourOfTheDay );
calendar.set(Calendar.MINUTE, minutes );
calendar.set(Calendar.SECOND, seconds );
Objects.requireNonNull(alarmManager).setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);
LMPSharedPrefs.getInstance().write(SharedPrefsConstants.PREFS_LOGOUT_SCHEDULER, TIMER_STARTED);
Работает нормально, и приложение выходит из системы ровно в 9,01 вечера. Но если я войду снова, то снова получаю выход. Означает, что мой сигнал тревоги срабатывает и в прошлый раз.
Есть ли лучший способ избежать срабатывания будильника за прошедшее время?