Sharedpreferences与Sqlite数据库

时间:2012-12-10 08:28:55

标签: android

我正在开发一个应用程序,我必须存储30到50个朋友联系人,姓名,电话和密码,我有两个选项共享首选项和sql lite,所以我应该使用哪一个,以便它有更少的存储空间,可以&# 39;浪费很多记忆,在搜索任何联系人或项目时哪一个会更快?

5 个答案:

答案 0 :(得分:9)

SQLite (数据类型复杂且数据量很大)

大量相同的结构化数据应该存储在SQLite数据库中,因为数据库是为这种数据设计的。

由于数据是由数据库构建和管理的,因此可以查询使用SQL等查询语言获取与某些条件匹配的数据子集。

这使得搜索数据成为可能。 当然,管理和搜索大量数据会影响性能,因此从数据库读取数据可能比从SharedPreferences读取数据要慢。

SharedPreferences * (数据很小,数据是预先输入的类型,您不想与用户分享)*

SharedPreferences是键/值存储,您可以在其中保存特定键下的数据。

要从商店读取数据,您必须知道数据的关键字。这使得读取数据非常容易。

但是,由于存储和读取大型结构化数据很困难,因为您需要为每个数据定义密钥,因此很容易存储少量数据,此外您无法真正在数据中搜索除外你有一个命名键的概念。

答案 1 :(得分:0)

您绝对应该使用SQLite来处理这类数据和要求。 SharedPreferences用于保存首选项(因此名称),而不是结构化数据。大量数据。使用SQL,您还可以对数据进行过滤和排序,例如: select * from contact where lastname like 'A%' order by firstname获取姓氏以A开头的所有联系人,并按名字排序(仅举例)。

答案 2 :(得分:0)

我认为最佳解决方案取决于应用程序现在和未来的开发方式。 如果您想开发一个以后无法更改的应用程序(例如联系人必须是姓名,电话和密码),您可以使用解决方案“快速和肮脏”,保存共享首选项的键值集和不要浪费任何时间。 但是如果信息可以改变并且应用程序可以有一些改进...更有用的是创建一个对象联系人和一个数据结构来管理它。

如果联系人是少数,你不关心表演。 50条记录直接访问用户的id在SQLite上有很好的表现。

答案 3 :(得分:0)

SQLite(数据是复杂类型,数据量很大)

SharedPreferences(数据很小,数据是premitive类型,你不想与用户分享)

答案 4 :(得分:0)

共享首选项是维护数据以便轻松存储和获取的最佳选择。但是,一旦我们从设置菜单中清除该应用程序的数据,我们就会丢失该应用程序的所有共享首选项。如果我错了,请纠正我。

感谢。