Общие настройки в сервисе и в Деятельности - PullRequest
0 голосов
/ 22 января 2019

В моем приложении служба работает в фоновом режиме, периодически проверяя, происходит ли событие (у нас больше заданной отметки времени). Если событие произошло, оно устанавливает логическое значение (DisplayStatus) в общих настройках.

В моем MainActivity.onStart() я проверяю значение этого логического значения и, основываясь на его значении, я либо отображаю, либо скрываю некоторые ImageViews. Поэтому я ожидаю, что как только служба установит DisplayStatus в значение true, я смогу покинуть свое приложение с помощью кнопки «Домой» (чтобы оно осталось в памяти), а затем, если я перезапущу его и увижу изображения. Хотя этого не происходит.

Я точно знаю, что мой фоновый сервис работает нормально, так как он также отправляет уведомление, когда он устанавливает логическое значение в true, но ImageViews отображаются только тогда, когда я удаляю приложение из памяти и перезапускаю его. Если я просто покину приложение и перезапущу его, изображения не отобразятся.

После поиска в теме, некоторые предлагают использовать .commit () вместо .apply (), когда я записываю логическое значение для общих настроек, но в моем случае это не имеет никакого значения, приложение необходимо стереть из памяти для отображения изображений.

MainActivity:

protected void onStart() {
    super.onStart();
    if (shared_preferences.getDisplayStatus(this)) {
        DisplayImages();
    } else {
        HideImages();
    }
}

Мой сервис:

private void CheckIfNotification() {
    if (System.currentTimeMillis() > GetTime.GetTimeInMillis(Globals.STARTDATE)) {
        if (!shared_preferences.getDisplayStatus(ctx)) {
            shared_preferences.setDisplayStatus(ctx, true);
            myNotification(ctx, "This a notification");
        }
    } else {
        shared_preferences.setDisplayStatus(ctx, false);
    }
}

Мой класс для установки / получения общих настроек:

public static void setDisplayStatus(Context ctx, boolean displayStatus) {
    ctx.getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE).edit()
            .putBoolean("DisplayStatus", displayStatus).commit();
}

public static boolean getDisplayStatus(Context ctx) {
    return ctx.getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE)
            .getBoolean("DisplayStatus", false);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...