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

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Last_Night
19 / 19 / 0
Регистрация: 02.10.2012
Сообщений: 124
#1

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

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

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

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

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

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

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

Окно настроек. ListPreference - Программирование Android
В окне настроек вывожу чекбоксы с одиночным выбором (кружки): <ListPreference android:defaultValue="1" ...

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

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

Не по теме:

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


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

Открыть пункт меню настроек - Программирование Android
Коллеги, я полный нуб в Android. Помогите, пожалуйста, в следующем вопросе. Необходимо создать простое приложение - по команде...

Сброс настроек Activity по клику - Программирование Android
Есть приложение с двумя активити, AsyncTask и всякими геттерами сеттерами. Во втором активити (Activity2) есть кнопка для возвращения на...

Получить значение ListPreference из настроек - Программирование Android
Как обратиться к классу настроек из одного класса и узнать оттуда значение ListPreference и выполнить нужное по выбранному? Ну у меня...

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


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
30.09.2013, 18:08
Ответ Создать тему
Опции темы

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