Я пытаюсь изменить один ключ в файле общих настроек в конце дня. Вот что мне удалось найти в интернете:
boolean alarmUp = (PendingIntent.getBroadcast(this, 0,
new Intent(this, AlarmResetFoodAdded.class),
PendingIntent.FLAG_NO_CREATE) != null);
if (!alarmUp) {
setAlarm();
}
Функция setAlarm ():
private void setAlarm() {
alarmMgr = (AlarmManager)this.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(this, AlarmResetFoodAdded.class);
alarmIntent = PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, 14);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
alarmMgr.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
AlarmManager.INTERVAL_DAY, alarmIntent);
}
AlarmResetFoodAdded.java:
@Override
public void onReceive(Context context, Intent intent)
{
pref = context.getSharedPreferences(AppControl.PREF, Activity.MODE_PRIVATE);
prefEditor = pref.edit();
prefEditor.putInt("foodAdded", 0);
prefEditor.commit();
}
Я тестирую это с помощью симулятора устройства с API 28. Я попытался установить время около 13:59. Тогда я бы подождал до 14:01, потому что это inExactRepeating, но ключ foodAdded в файле настроек остается прежним, даже когда я снова открываю приложение.
Я почти уверен, что сигнал тревоги активирован, потому что когда я отлаживаю alarmUp, значение ложно в первый раз, а затем, когда я снова его открываю, это правда.