Как организовать хранение настроек?

Наверно избито, но не могу найти законченный вариант ответа. Есть сервис, есть активити настроек. Настройки в SharedPreferences. Как организовать хранение, доступ во всех классах, уведомление об изменении.

Хотел сделать класс хелпер со статическими полями и методами, но SharedPreferences требуется Context, получается класс надо инициализировать каким-то методом с передачей этого контекста.

Кто как делает?
  • Вопрос задан
  • 255 просмотров
Пригласить эксперта
Ответы на вопрос 2
GavriKos
@GavriKos
Перегрузите класс Application, там сможете получить контекст и инициализировать ваш класс хранения настроек. Перегрузку application делаете синглтоном, и делаете в нем геттер на настройки. Все - можно работать из любого класса.
Ответ написан
@YuryBorodkin
Android dev
так и делаем.
Есть два способа, быстрый и правильный:
быстрый - в Application onCreate() берем контекст, суем его в статическую переменную, и в классе-хелпере статические методы используют этот контекст. решение плохое- концептуально мы нарушаем ООП,SOLID. Практически - такой код плохо тестировать, т.к. а) статические методы берет только PowerMock и б) наши классы будут иметь ничем не ограниченный доступ туда, т.е. проблема глобальных переменных во вей красе.
правильный : Натурально делаем SharedPreferenceFactory и далее по классическим жава канонам. Или, если вспомнили, что живем в 2016 - через DI.
И да, код писать быстро - поддерживать больно, зачем за мнимой скоростью гнаться - хз.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы