【问题标题】:SQL or SharedPreferences, or what?SQL 或 SharedPreferences,还是什么?
【发布时间】:2015-09-08 02:50:27
【问题描述】:
我想为啤酒酿造创建一个安卓应用。该应用程序创建食谱并加载食谱。每个食谱都包含每种所需的成分和数量,还包括所需的水,煮沸时间和其他内容。在简历中,每个配方都包含大量字符串(成分名称)、整数、布尔值和双精度值。
将这些值保存在应用程序中并可能与其他用户共享的最佳方法是什么?
如果每个食谱都可以存储为一个独立的文件,那就太好了。
我正在使用 Android Studio
【问题讨论】:
标签:
android
sqlite
sharedpreferences
【解决方案1】:
可能最好的解决方案是使用 SQLite。
它将为您提供结构化数据的可能性,并使搜索和过滤变得更加容易。
对于共享部分,您可以创建只有您的应用程序知道的文件格式(它可以是文本或二进制文件),或者您可以使用一些服务器端,如parse,这样您就可以非常轻松将数据存储到服务器中并通知用户更改等。
【解决方案2】:
这完全取决于您的灵活性。
Content Provider用于在应用程序之间共享数据。
SharedPreference 用于存储小信息,例如登录页面中的“read me”选项,您可以在 SharedPreference 中存储用户 ID 和密码,以便将来跳过登录屏幕。
Sqlite 用于结构数据量大时。 Sqlite 还允许您使用查询来搜索特定数据。
【解决方案3】:
SharedPreferences 用于键值对,对这样的事情没有用处。要么使用 SQLite 数据库,要么将文件存储在应用的数据目录中。
阅读更多关于存储选项的信息here。
【解决方案4】:
使用 SharedPreference,您拥有最大的灵活性(没有严格的结构),但您也有大小(和索引数?)限制,如果有很多食谱,您可能会遇到这些限制。
使用 sqlite,您几乎没有限制,但必须尊重您需要定义的结构。也更容易调试和操作数据。
根据您的应用如何导航数据,您甚至可以使用平面文件(例如,每个配方一个文件,使用 json 格式)。
在这些情况下,我通常选择 sqlite,因为它通常更具未来性。
【解决方案5】:
SharedPreference 更适合设置或少量数据。 存储在共享首选项中的数据存储在键值对中。这使得检索数据更简单。
复杂和大量数量相同的结构化数据应存储在 SQLite 数据库中,因为数据库是为此类数据设计的。
我的结论
SQLite 提供了一种非常强大的方式来组织和保存您的数据。所以我更喜欢 SQLite。