Как передать одни и те же данные с другим значением с помощью putExtra () - PullRequest
0 голосов
/ 18 марта 2020

Я работаю с классом обслуживания, который должен знать, работает ли приложение в фоновом режиме или нет. Для этого я создал в своем сервисе логическую переменную с именем activityVisible. Мне нужно постоянно обновлять его, чтобы знать, находится ли приложение в фоновом режиме или активно. Я делаю это, отправляя true по методу onResume() в моей деятельности следующим образом:

intent.putExtra("Activity Visible", true)

и false по методу onPause() следующим образом:

intent.putExtra("Activity Visible", false)

Тем не менее, я печатаю дополнительные деньги в моем сервисе, и они всегда получают true. Я думаю, что это происходит из-за того, что, добавив дополнительный, вы не можете обновить его значение, и это может быть причиной того, что он не работает.

В любом случае, я могу сделать то же самое по-другому? Или решение, как я это реализую?

1 Ответ

0 голосов
/ 18 марта 2020

Вы можете использовать SharedPreference для сохранения текущего состояния приложения.

для ссылки на SharedPreference

SharedPreferences sp = getSharedPreferences("prefs", Context.MODE_PRIVATE);

для установки логического значения в общем предпочтении, вам нужно использовать его редактор, поэтому примените этот код в onPause и onResume, изменяя значение «isVisible» в зависимости от ваших потребностей

boolean isVisible = true;
SharedPreferences.Editor  editor = sp.edit();
editor.putBoolean("activity_visible", isVisible);
editor.apply(); // use apply to confirm the edit

и чтобы получить сохраненное значение, вы можете просто обратиться к нему, используя

boolean valueStored = sp.getBoolean("activity_visible", false /* Default value if not existed */);
Log.d("Activity State: ", "Boolean: " + valueStored); 

и делайте что хотите с этим значением.

...