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

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

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

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

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

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

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

Изменение настроек
После установки программы SwipePad захотелось, чтобы прямо из неё можно было...

Окно настроек. ListPreference
В окне настроек вывожу чекбоксы с одиночным выбором (кружки): ...

7
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
30.09.2013, 01:01 2
Preferences
0
Tester64
396 / 357 / 46
Регистрация: 22.05.2013
Сообщений: 2,518
30.09.2013, 01:48 3
Цитата Сообщение от V0v1k Посмотреть сообщение
Preferences
А чем лучше???
Я когда чуть-чуть "подрос" в ява-кодинге сразу перевел все настройки в базу. Надежность не ниже. Хранение в индексированой таблице дает сильный прирост (теоретически) в скорости чтения-записи по сравнению с XML-файлами... А Preferences насколько я понял (находил файлы) именно там и хранит.
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
30.09.2013, 04:31 4
преференсы 1 раз загружаются с файла а дальше в памяти висят, да и никто не делает тысячи настроек чтобы возникали проблемы с производительностью. не вижу смысла отказываться от привычного фреймворка и писать велосипед с БД.
0
Tester64
396 / 357 / 46
Регистрация: 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
1160 / 984 / 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
396 / 357 / 46
Регистрация: 22.05.2013
Сообщений: 2,518
30.09.2013, 17:23 7
Цитата Сообщение от V0v1k Посмотреть сообщение
ак и не понял в чем смысл писать свой велосипед если есть готовый фреймворк с реализацией UIя.
Возможно сказывается моя СИЛЬНАЯ не любовь формата XML

Не по теме:

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


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

Сохранение настроек в SQLite
В процессе моего обучения разработке для Andrid поднялась тема сохранения...

Сохранение настроек и последующее их использование
Здравствуйте. Пишу приложение, где есть активити с настройками, например 3...

Как достучаться до системных настроек?
Тяжело ли это? В Windows большинство настроек лежит в реестре. Где лежат...


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

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

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