【问题标题】:Saving object or object Id in sharedPreference or SQL在 sharedPreference 或 SQL 中保存对象或对象 ID
【发布时间】:2019-03-08 10:58:48
【问题描述】:

在我的杂货店应用中,我将用户选择的产品保存在单例类中。现在根据新要求,每当用户重新打开应用时,都应该再次检索这些产品(购物车)。 类 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) 我的第一个问题是我应该只保存所有产品字段还是只保存产品 ID。如果我保存产品 ID,我将不得不在应用启动时检索所有购物车产品的详细信息,但如果我保存所有产品的字段那么它会占用很多内存。

哪一种是保存产品的首选方式?

据我所知,有 3 个选项 1)存储在共享首选项中 2)存储在文件中 3) 存储在sql中

【问题讨论】:

  • 使用 gson 库将您的对象保存在共享首选项中

标签: android android-sqlite sharedpreferences


【解决方案1】:

如果您将产品存储在 SQLite 数据库中,更好的决定是将产品 ID 存储在 SharedPreferences 中。要检索产品购物车,您首先从 SharedPreferences 获取 id,然后通过该 id 找到您的产品。想象一下产品选项发生变化的情况 - 您将需要同时更改 SharedPreferences 和存储的数据库产品实例,因此仅存储 id 将是更好的决定。

【讨论】:

    【解决方案2】:

    要在应用死亡时保留应用的状态,需要使用 SharedPreferences。如果需要数据库,可以使用 SQLite。

    出于您的意图,SharedPreferences 是最好的,因为您需要做的就是在终止应用程序之前保留用户看到的内容。因此,您自己需要关心的是数据中呈现给用户的那些字段(用户在终止您的应用程序之前看到或与之交互的那些数据),其中之一可能是 id 或 origin_ch。

    对于数据库,您需要保存所有必要的数据,但对于 SharedPreferences,您只需要用户在应用死亡之前看到或与之交互的数据。

    【讨论】:

      【解决方案3】:

      您也可以使用简单的 SQLite 数据库。由于您只需要存储杂货,我认为您不需要超过一张 2-3 行的桌子。 Android 有很好的文档。如果您对此有任何疑问,可以在这里提问或查看一些分步教程。

      Android 文档: https://developer.android.com/training/data-storage/sqlite

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-02-21
        • 2021-11-14
        • 1970-01-01
        • 2013-11-16
        • 2014-01-17
        • 2013-01-08
        • 1970-01-01
        相关资源
        最近更新 更多