Редактировать общие настройки, используя повторяющийся сигнал - PullRequest
0 голосов
/ 10 марта 2019

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

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, значение ложно в первый раз, а затем, когда я снова его открываю, это правда.

1 Ответ

0 голосов
/ 11 марта 2019

Я думаю, вы должны использовать prefEditor.apply(); вместо prefEditor.commit(); в вашем методе onReceive.

...