在sharedPreference或SQL

时间:2018-10-03 08:51:45

标签: android android-sqlite sharedpreferences

在我的杂货应用程序中,我将用户选择的产品保存在Singleton类中。现在,根据新要求,每当用户重新打开应用程序时,都应再次检索这些产品(购物车)。 类产品具有许多领域:

{
        "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

3 个答案:

答案 0 :(得分:0)

您还可以使用一个简单的SQLite数据库。由于您只需要存储杂货,因此我认为您不需要多于2-3行的桌子。 Android上有不错的文档。如果您遇到任何困难,可以在这里询问或查看一些分步教程。

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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

对于数据库,您需要保存所有必需的数据,但对于SharedPreferences,则仅需要用户在应用程序终止之前看到或与之交互的数据。