在我的杂货应用程序中,我将用户选择的产品保存在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
答案 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,则仅需要用户在应用程序终止之前看到或与之交互的数据。