Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
Last_Night
20 / 20 / 8
Регистрация: 02.10.2012
Сообщений: 124
1

Хранение настроек пользователя

29.09.2013, 22:01. Просмотров 1101. Ответов 7
Метки нет (Все метки)

Где лучше хранить настройки пользователя в Preferences или в БД?
1
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.09.2013, 22:01
Ответы с готовыми решениями:

Хранение настроек
При запуске приложения запускается Activity с 2 Spinner, и в них нужно выбрать значения. После...

Хранение настроек на Гугле под аккаунтом
Гуру, подскажите насколько это возможно? Пока храню настройки в SharedPreferences. Но... хочу...

Защита настроек от пользователя
Здравствуйте, подскажите как вы скрываете настройки от пользователя? Например чтоб пользователь...

Хранение настроек
Где самое оптимальное место для хранения настроек программы, профилей, другой user-data. Да такое,...

Хранение настроек в XML
Подскажите как хранить и читать настройки из XML файла

7
V0v1k
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
30.09.2013, 01:01 2
Preferences
0
Tester64
397 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
30.09.2013, 01:48 3
Цитата Сообщение от V0v1k Посмотреть сообщение
Preferences
А чем лучше???
Я когда чуть-чуть "подрос" в ява-кодинге сразу перевел все настройки в базу. Надежность не ниже. Хранение в индексированой таблице дает сильный прирост (теоретически) в скорости чтения-записи по сравнению с XML-файлами... А Preferences насколько я понял (находил файлы) именно там и хранит.
0
V0v1k
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
30.09.2013, 04:31 4
преференсы 1 раз загружаются с файла а дальше в памяти висят, да и никто не делает тысячи настроек чтобы возникали проблемы с производительностью. не вижу смысла отказываться от привычного фреймворка и писать велосипед с БД.
0
30.09.2013, 04:31
Tester64
397 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
30.09.2013, 14:11 5
Цитата Сообщение от V0v1k Посмотреть сообщение
преференсы 1 раз загружаются с файла а дальше в памяти висят, да и никто не делает тысячи настроек чтобы возникали проблемы с производительностью. не вижу смысла отказываться от привычного фреймворка и писать велосипед с БД.
Не убедили! С таким-же успехом я делаю класс GlobalSetup с переменными уже прочитанными из памяти. Доступ к настройкам - проще и короче:
Java
1
2
3
4
5
6
IF(GlobalSetup.IsAdmin) {
 
OR
 
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); 
IF(prefs.getBoolean("IsAdmin", false)) {
По моей методе может быть тысяча настроек (загляните в виндовую версию TotalCommander). Записывать могу данные сразу после модификации ее в памяти. ИМХО будет быстрее, займет меньше места. База является единым хранилищем, поэтому ее легко загнать в резервную копию. Глобальным минусом моего подхода/фреймворка является необходимость ОТДЕЛЬНО создать и поддерживать связь с таблицей в базе.

Возможно конечно что парсер XML, написанный на Си на ПОРЯДОК быстрее явы с базой, но это не могу опровергнуть, а тестовые замеры делать лень!

Добавлено через 7 минут
p.s. В базе можно сделать ОБЩИЕ настройки для НЕСКОЛЬКИХ программ.
Базу можно положить на флешку и она не уничтожится при удалении прогрммы.
0
V0v1k
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
30.09.2013, 16:21 6
Цитата Сообщение от Tester64 Посмотреть сообщение
Java
1
2
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); 
IF(prefs.getBoolean("IsAdmin", false)) {
можно примитивную обертку написать.

Цитата Сообщение от Tester64 Посмотреть сообщение
По моей методе может быть тысяча настроек (загляните в виндовую версию TotalCommander).
у меня тоже было тысяча строк в преференсах и все мгновенно грузилось.

Цитата Сообщение от Tester64 Посмотреть сообщение
а тестовые замеры делать лень!
на одном, сомнительном, предположении о каком-то, сомнительном, приросте в производительности, который пользователь даже не заметит, отказываться от родного фреймворка в пользу велосипеда не вижу целесообразным.

Цитата Сообщение от Tester64 Посмотреть сообщение
В базе можно сделать ОБЩИЕ настройки для НЕСКОЛЬКИХ программ.
то же самое и с преференсами.

Цитата Сообщение от Tester64 Посмотреть сообщение
Базу можно положить на флешку и она не уничтожится при удалении программы.
сомнительное преимущество, да и с преференсами тоже не сложно сделать бекап настроек.

так и не понял в чем смысл писать свой велосипед если есть готовый фреймворк с реализацией UIя.
0
Tester64
397 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
30.09.2013, 17:23 7
Цитата Сообщение от V0v1k Посмотреть сообщение
ак и не понял в чем смысл писать свой велосипед если есть готовый фреймворк с реализацией UIя.
Возможно сказывается моя СИЛЬНАЯ не любовь формата XML

Не по теме:

Требует парсер нужной версии (в винде). Нет человеческого редактора-вьювера. На глаз тоже просмотреть большой файл тяжело. Очень сложная структра. Отдельный файл для провеки правильности заполнения... Короче целый язык с программируемыми названиями блоков и забирающий для мелких полей в 2-3-10 раз больше места чем необходимо...


...приведу в пример мой проект (бьюсь над ним уже 8 месяцев с нулевого знания явы). Несколько баз данных сложной но одинаковой стуктуры (справочники). Пользователь может обновить базу с сервера и править ее самому. Можно на лету сменить базу и... сразу настройки меняются. Можно создать новую базу указав только имя и настройки уже внутри. Можно отправить базу архивом на сервер или получить назад (резервные копии, смена устройства у пользователя) и при востановлении пользователь не заметит отличий... Можно было настройки архивировать рядом, сложные схемы для расшаривания на несколько программ...
Нужна была максимальная надежность работы - если сдохла батарея в процессе работы - настройки должны быть корректно записаны. Возможно даже блоками в транзакции - если изменился параметр №2(код фирмы), то обязан сохранить и параметр №3 (название фирмы) - иначе полезет глобальная ошибка... а "фреймворк" для этого написал за пол-часа-час (получить/записать).
На счет скорости не знаю, но на медленных устройствах всё может тормозить... (у меня все - "летает", а клиенты жалуются на "тормоза")
0
V0v1k
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
30.09.2013, 18:08 8
ок, соглашусь на том, что можно написать свой велосипед если стандартные средства не подходят под специфические требования. но если новичок спрашивает "Где лучше хранить настройки пользователя в Preferences или в БД?", давайте отталкиваться от обычных требований и не навязывать то, что ему не нужно и не усложнять ему жизнь.
2
30.09.2013, 18:08
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.09.2013, 18:08

Хранение настроек программы
Всем Привет! Вопрос, где лучше хранить настройки программы. 1)В БД не надо, так как для каждой...

Хранение настроек в HKLM
Задача состоит в назначении доступа к ключу реестре только для создателя - моей программы. Чтобы...

Хранение настроек в dat
void __fastcall TForm1::FormCreate(TObject *Sender) { CFG =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.