Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
Last_Night
19 / 19 / 0
Регистрация: 02.10.2012
Сообщений: 124
29.09.2013, 22:01     Хранение настроек пользователя #1
Где лучше хранить настройки пользователя в Preferences или в БД?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
V0v1k
1157 / 981 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
30.09.2013, 01:01     Хранение настроек пользователя #2
Preferences
Tester64
395 / 356 / 43
Регистрация: 22.05.2013
Сообщений: 2,488
30.09.2013, 01:48     Хранение настроек пользователя #3
Цитата Сообщение от V0v1k Посмотреть сообщение
Preferences
А чем лучше???
Я когда чуть-чуть "подрос" в ява-кодинге сразу перевел все настройки в базу. Надежность не ниже. Хранение в индексированой таблице дает сильный прирост (теоретически) в скорости чтения-записи по сравнению с XML-файлами... А Preferences насколько я понял (находил файлы) именно там и хранит.
V0v1k
1157 / 981 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
30.09.2013, 04:31     Хранение настроек пользователя #4
преференсы 1 раз загружаются с файла а дальше в памяти висят, да и никто не делает тысячи настроек чтобы возникали проблемы с производительностью. не вижу смысла отказываться от привычного фреймворка и писать велосипед с БД.
Tester64
395 / 356 / 43
Регистрация: 22.05.2013
Сообщений: 2,488
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. В базе можно сделать ОБЩИЕ настройки для НЕСКОЛЬКИХ программ.
Базу можно положить на флешку и она не уничтожится при удалении прогрммы.
V0v1k
1157 / 981 / 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я.
Tester64
395 / 356 / 43
Регистрация: 22.05.2013
Сообщений: 2,488
30.09.2013, 17:23     Хранение настроек пользователя #7
Цитата Сообщение от V0v1k Посмотреть сообщение
ак и не понял в чем смысл писать свой велосипед если есть готовый фреймворк с реализацией UIя.
Возможно сказывается моя СИЛЬНАЯ не любовь формата XML

Не по теме:

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


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

Android Сброс настроек Activity по клику
Android Хранение настроек
Как чекнуть радиобаттон (в радиогруппе) из настроек? Android
Открыть пункт меню настроек Android
Android Хранение настроек на Гугле под аккаунтом

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

Или воспользуйтесь поиском по форуму:
V0v1k
1157 / 981 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
30.09.2013, 18:08     Хранение настроек пользователя #8
ок, соглашусь на том, что можно написать свой велосипед если стандартные средства не подходят под специфические требования. но если новичок спрашивает "Где лучше хранить настройки пользователя в Preferences или в БД?", давайте отталкиваться от обычных требований и не навязывать то, что ему не нужно и не усложнять ему жизнь.
Yandex
Объявления
30.09.2013, 18:08     Хранение настроек пользователя
Ответ Создать тему
Опции темы

Текущее время: 03:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru