Это хорошая идея для хранения нескольких значений как SharedPreference? - PullRequest
0 голосов
/ 08 июня 2018

В моем приложении для Android у меня есть около 100 мест (максимум будет 200).Я хочу позволить пользователю пометить каждое место как посещенное и сохранить этот выбор.

Чтобы пользователь мог отметить / снять отметку с того, что он уже посетил некоторые места / города.

Это хорошая идея?если я сохраню значения как SharedPreference?

Мой код:

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putString("London", "1");
editor.commit(); 

и в следующий раз, когда пользователь пометит другое место, тогда:

editor.putString("Paris", "1");

Я спрашиваю из-заколичество возможных мест для хранения, которое в моем случае будет максимум 200.Я обычно использую этот тип хранилища просто для хранения некоторых настроек или около того, но я думаю, что это простой способ хранения значений в моем случае, я не хочу использовать базу данных или что-то подобное для хранения.

Ответы [ 3 ]

0 голосов
/ 08 июня 2018

Будет ли это хорошей идеей или нет, зависит от ваших требований и ожиданий.Если вы храните данные таким образом, они будут работать наверняка, но будут некоторые ограничения:

  • Может быть сложно показать список мест пользователю.Если вы храните некоторые другие данные в общих настройках, вам потребуется способ отличить места от других данных.В этом случае вам, вероятно, потребуется добавить префикс для всех ваших ключей, например «place_London», «place_Paris» и т. Д.
  • Вы полагаетесь на английские имена ключей, поэтому у вас могут возникнуть проблемы с локализацией, есливы поддерживаете другие языки
  • Поддерживать управление версиями и масштабируемость будет намного сложнее.Например, если позже у вас будет объект с именем «Поместить», и у него будет больше информации, чем просто имя с флагом, тогда будет гораздо сложнее сохранить его в общих настройках.Например, если в какой-то момент вы хотите добавить соответствующее название страны для всех мест, что вы делаете?

Я думаю, что в этом сценарии вы на самом деле DO хотите использовать базу данных.Это окупится.

0 голосов
/ 08 июня 2018

Вы должны переключиться на более надежный способ хранения данных в хранилище вместо использования SharedPreferences.

Sqlite - хороший вариант, но если вы не любите писать SQL Queries и хотите найти решение, в котором вы хотите хранить данные в своем хранилище, Realm - замечательная альтернатива.

Хотя перед внедрением, пожалуйста, прочитайте больше о плюсах и минусах использования области.Вы можете прочитать больше о Realm здесь: -

realm.io

Realm vs Room против ObjectBox

0 голосов
/ 08 июня 2018

SharedPreferences - это ключ / значение для сохранения данных.Я думаю, что нецелесообразно сохранять большой объем структурированных данных, так как вы должны определить ключ для каждого имеющегося у вас значения.

Использование SQLite может быть лучшим вариантом для вашего случая.

...