Сохранение объекта или идентификатора объекта в sharedPreference или SQL - PullRequest
0 голосов
/ 03 октября 2018

В моем продуктовом приложении я сохранял продукты, выбранные пользователями в классе Singleton. Теперь, согласно новому требованию, эти продукты (корзина) должны извлекаться снова при каждом повторном открытии приложения пользователем.Класс Product имеет много полей:

{
        "imageDisplay",
        "categorySpecial",
        "_id",
        "name_ch",
        "name_en",
        "origin_ch",
        "origin_en",
        "description_ch",
        "description_en",
        "specification_ch",
        "specification_en",
        "unit_ch",
        "unit_en",
        "priceOriginal",
        "price",
        "stock",
        "sold",
        "isOnShelf",
        "processingPriority",
        "imageCover"
}

1) Мой первый вопрос: должен ли я просто сохранить все поля продукта или просто идентификатор продукта. В случае, если я сохраняю идентификаторы продукта, мне нужно будет получить подробную информацию овсе продукты корзины при запуске приложения, но если я сохраню все поля продукта, оно будет занимать много памяти.

Какой способ сохранения товаров предпочтителен?

Есть 3 вариантасогласно моим знаниям 1) хранение в общем предпочтении 2) хранение в файле 3) хранение в sql

Ответы [ 3 ]

0 голосов
/ 03 октября 2018

Если вы храните Продукты в базе данных SQLite, лучшим решением будет сохранение идентификаторов продуктов в SharedPreferences.Чтобы получить корзину продуктов, вы сначала получаете идентификаторы из SharedPreferences, а затем находите свои продукты по этим идентификаторам.Представьте себе ситуацию, когда параметры продукта изменились - вам потребуется изменить и сохраненные экземпляры продукта SharedPreferences, и базу данных, поэтому лучшим решением будет просто сохранение идентификаторов.

0 голосов
/ 03 октября 2018

Чтобы сохранить состояние приложения после его смерти, следует использовать SharedPreferences.Если вам нужна база данных, вы можете использовать SQLite.

Для вашего намерения SharedPreferences является лучшим, так как все, что вам нужно сделать, это сохранить то, что видит пользователь перед тем, как убить приложение.Следовательно, все, что вам нужно, - это те поля в ваших данных, которые представляются пользователю (те данные, которые пользователи видят или взаимодействуют до того, как убить ваше приложение), одним из которых может быть id или origin_ch.

Для базы данныхвам нужны все необходимые данные, но для SharedPreferences вам нужны только те данные, которые пользователь видит или взаимодействует с ним до смерти приложения.

0 голосов
/ 03 октября 2018

Вы также можете использовать простую базу данных SQLite.Так как вам нужно хранить только продовольственные товары, я не думаю, что вам понадобится более одной таблицы с 2-3 строками.Android имеет довольно хорошую документацию по нему.Если у вас есть какие-либо проблемы с этим, вы можете спросить здесь или посмотреть пошаговые руководства.

Документация Android: https://developer.android.com/training/data-storage/sqlite

...