Страницы

Поиск по вопросам

пятница, 11 января 2019 г.

Как во фрагменте проверить изменилось ли значение SharedPreferences

Хочу, чтобы фрагмент, например, каждые 2 секунды сверял значение из SharedPreferences и выполнял определенное действие или как можно по другому реализовать ?


Ответ

Чтобы контролировать изменения в SharedPreferences на него можно повесить слушатель. Слушатель будет срабатывать каждый раз, когда в экземпляр настроек, к которым он подключен будут вносится любые изменения:
public class SomeFragment extends Fragment implements SharedPreferences.OnSharedPreferenceChangeListener {
SharedPreferences prefs;
....
prefs = PreferenceManager.getDefaultSharedPreferences(getActivity()); prefs.registerOnSharedPreferenceChangeListener(this);
@Override public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
if (key.equals("some_key")) {
// действия при изменении значения в ключе some_key
} } }
где some_key - определенный ключ в настройках (ячейка для сохранения значений) sharedPreferences - экземпляр настроек. Из него можно получить конкретное измененное значение.
параметр переданный колбэком String key это тот ключ, в котором произошли изменения.
Официальная документация по вопросу и рекомендации по использованию.

Комментариев нет:

Отправить комментарий