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

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

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

Как работал предыдущий код, я импортировал пару идентификаторов и логических значений в список объектов. Пользователь, когда затем добавляет дополнительную информацию к этим объектам, я повторно сохраняю данные этих объектов обратно в отдельную, но связанную таблицу 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))");

person G-Schmu    schedule 29.05.2019    source источник
comment
SharedPreferences - это хороший способ для приложения хранить примитивные данные в парах "ключ-значение". С ним также довольно просто работать.   -  person sydney    schedule 29.05.2019
comment
SharedPrefs - лучшее место для хранения пар ключ-значение. и нет ограничений по размеру ...   -  person dariush f    schedule 29.05.2019
comment
@dariushf Хорошо, но если SharedPrefs хранится в памяти во время работы приложения, на какие рекомендации / ограничения мне следует обращать внимание? Есть ли момент, когда хранение данных другим методом более эффективно, чем использование памяти в основном для разовой транзакции? Я понимаю, что SharedPrefs был бы простым решением, если бы данные менялись нечасто (и скорость без ввода-вывода была бы полезной), но я просто использую его для заполнения списка один раз, а затем продолжаю работать с функциями приложения.   -  person G-Schmu    schedule 29.05.2019
comment
sharedPrefs находится не в памяти, а в каталоге хранилища приложения.   -  person dariush f    schedule 29.05.2019


Ответы (1)


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

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

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

person Karthik    schedule 29.05.2019