Задать вопрос

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

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

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

Кто как делает?
  • Вопрос задан
  • 257 просмотров
Подписаться 3 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Android-разработчик
    12 месяцев
    Далее
  • Яндекс Практикум
    Мидл Android‑разработчик
    5 месяцев
    Далее
  • Академия Codeby
    Курс «Анализ защищенности приложений Андроид»
    14 недель
    Далее
Пригласить эксперта
Ответы на вопрос 2
GavriKos
@GavriKos
Микропетпроджект - домашнее облако homeCloud
Перегрузите класс Application, там сможете получить контекст и инициализировать ваш класс хранения настроек. Перегрузку application делаете синглтоном, и делаете в нем геттер на настройки. Все - можно работать из любого класса.
Ответ написан
@YuryBorodkin
Android dev
так и делаем.
Есть два способа, быстрый и правильный:
быстрый - в Application onCreate() берем контекст, суем его в статическую переменную, и в классе-хелпере статические методы используют этот контекст. решение плохое- концептуально мы нарушаем ООП,SOLID. Практически - такой код плохо тестировать, т.к. а) статические методы берет только PowerMock и б) наши классы будут иметь ничем не ограниченный доступ туда, т.е. проблема глобальных переменных во вей красе.
правильный : Натурально делаем SharedPreferenceFactory и далее по классическим жава канонам. Или, если вспомнили, что живем в 2016 - через DI.
И да, код писать быстро - поддерживать больно, зачем за мнимой скоростью гнаться - хз.
Ответ написан
Ваш ответ на вопрос

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

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