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

Есть настройки приложения.

Есть активити, которая даёт пользователю менять настройки (например, выбирать источники данных).

Сервис пользуется этими настройками (например, по источникам данных лезет в интернет и что-то качает).

Как организовать хранение этих настроек в приложении? В preferences не катит, как мне кажется. БД слишком сложно решение для данной задачи.

Есть мысль сделать синглтон, который инициаруется в application считыванием настроек из файла.

Подскажите, как делать.

UPD.
Настройки достаточно большие и не являются простым типом и, скорее всего, будут увеличиваться, поэтому мне кажется, что в данном случае подходит Serializable.
  • Вопрос задан
  • 3415 просмотров
Пригласить эксперта
Ответы на вопрос 2
SQLite Вам в помощь..
Ответ написан
@ProkletyiPirat
примерно такую же проблему сейчас решаю.
нужно сделать возможность инкрементной (во время выполнения) кастомизации внешнего вида программы, от размера и положения кнопок до их цветовой гаммы, и это не считая настроек того что должны делать эти кнопки. Помимо этого должна быть возможность собрать все настройки в группу и при определённых условиях применить эту группу.


сейчас всего пара настроек и хранятся они в preferences.

сначала думал реализовать всё в preferences но из за группировки и условий размер и сложность изменения этих preferences будет мега огромна.
потом подумал о БД, но тут опять гемморой в добавлении\удалении\изменении как самих настроек так и их количества.

в общем из-за того что при добавлении новой "фичи" придётся перелопачивать код сразу в нескольких места (и это не считая реализации самой "фичи") отказался от выше озвученных идей.

но не всё так грустно, пришла в голову вот такая мысль "хранить настройки в формате xml или json". Собственно хранить в виде текста дефолтные настройки в preferences, а групповые в БД.
Когда настройки понадобятся они парсятся из json-строки в map и передаются куда надо. В итоге имею возможность не трогая сохранение\загрузку\передачу данных в preferences и БД, добавлять настройки фич, нужно только подправлять десериализацию из за вложенности настроек.

если нет вложенности настроек (вместо map просто набор переменных) то по крайней мере в gson сериализация\десериализация происходит в пару строк кода.
Ответ написан
Ваш ответ на вопрос

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

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