Как мне хранить ~ 400 пар ключ-значение для моего приложения для Android?

Как лучше всего хранить ~ 400 пар ключ-значение для приложения Android? Эти значения будут установлены при первоначальной настройке приложения и впоследствии будут меняться крайне редко. Однако они используются один раз для каждого приложения в качестве шаблона для создания набора других объектов, которыми затем манипулируют.

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

Как работал предыдущий код, я импортировал пару ID и логического значения в список объектов. Затем пользователь добавлял дополнительную информацию к этим объектам, а затем я повторно сохранял данные этих объектов обратно в отдельную, но связанную таблицу sql.

Должен ли я сохранить значения в таблице? Было бы слишком много или неэффективно использовать SharedPreferences? Есть ли лучший способ, о котором я не знаю?

Вот формат двух таблиц. Первая отслеживает, какие тележки находятся в ротации в данный момент, тогда как вторая таблица представляет собой ежедневную историю каждой тележки.

(cartID int NOT NULL PRIMARY KEY, 
in_rotation boolean NOT NULL) ");

database.execSQL("create table " + cartlistTable + " 
(checksheetID string NOT NULL, 
cartID int NOT NULL, 
in_rotation boolean NOT NULL, 
checked boolean default 0, 
overdue boolean default 0, 
maintenance boolean default 0, 
FOREIGN KEY(checksheetID) REFERENCES checksheet(checksheetID), 
FOREIGN KEY(cartID) REFERENCES carts(cartID))");

SharedPrefs — лучшее место для хранения пар ключ-значение. и нет ограничений по размеру...

Kapta 29.05.2019 20:51

@dariushf Хорошо, но с учетом того, что SharedPrefs сохраняются в памяти во время работы приложения, какие рекомендации / ограничения мне следует учитывать? Есть ли точка, в которой хранение данных другим методом более эффективно, чем использование памяти в основном для одноразовой транзакции? Я понимаю, что SharedPrefs было бы простым решением, если бы данные изменялись нечасто (и скорость без ввода-вывода была бы полезной), но я просто использую его для заполнения списка один раз, а затем продолжаю работу с приложением.

G-Schmu 29.05.2019 21:01

sharedPrefs находится не в памяти, а в каталоге хранилища приложений.

Kapta 29.05.2019 21:24

SharedPreferences — это хороший способ для приложения хранить примитивные данные в парах ключ-значение. С ним также довольно просто работать.

sydney 29.05.2019 20:29
0
4
234
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я бы посоветовал вам держаться подальше от общих настроек, если вы работаете с большим объемом данных, потому что максимальный объем данных, который может храниться в общих настройках, составляет 1428,51 КБ.

Кроме того, общие настройки хранятся в XML-файле, и им не хватает мощной поддержки транзакций от SQlite или Room. Общие настройки загружают все данные и считывают содержимое всего XML-файла в память.

Сравнивая комнату и общие настройки, для информации, например, 400 элементов, вы можете выбрать комнату.

Другие вопросы по теме