Ran*_*a.S 144 database sqlite android data-storage sharedpreferences
在SQLite数据库和共享首选项之间存储信息的好机制是什么?
为何使用共享偏好?为什么要使用sqlite?我试图找出它们之间的区别,哪个是更好的数据存储机制,但我无法在Google上找到合适的答案.请帮我举例和解释.
Flo*_*Flo 154
这实际上取决于您要存储的数据.
SQLite的
大量相同的结构化数据应存储在SQLite数据库中,因为数据库是为这种数据设计的.由于数据是由数据库构建和管理的,因此可以查询使用SQL等查询语言获取与某些条件匹配的数据子集.这使得可以搜索数据.当然,管理和搜索大量数据会影响性能,因此从数据库读取数据可能比从SharedPreferences读取数据要慢.
SharedPreferences
SharedPreferences是一个键/值存储,您可以在其中保存特定键下的数据.要从商店读取数据,您必须知道数据的关键字.这使得读取数据非常容易.但是,尽管存储和读取大量结构化数据很困难,因为您需要为每个数据定义关键字,但是除了您有一定的概念之外,您无法真正搜索数据.命名键.
Tom*_*Tom 90
这个问题有一个公认的答案,但我认为在这个话题上还有更多关于速度的说法.
应用程序的SharedPreferences和Sqlite DB都只是文件,存储在设备文件系统的应用程序目录中.如果数据量不是太大,则Sqlite选项将涉及更大且更复杂的文件,并且具有更多处理开销以进行简单访问.
因此,如果数据的性质没有决定您的选择(如接受的答案中所述),并且速度很重要,那么您最好使用SharedPreferences.
读取一些数据通常是显示主要活动的关键路径,因此我认为速度通常非常重要.
关于速度和效率的最后一个想法 - 如果您需要将Sqlite数据库用于某些结构化数据,那么在数据库中存储用户首选项可能更有效,因此您不会打开第二个文件.这是一个相当小的考虑因素 - 只有在您需要访问结构化数据和首选项之后才可以值得考虑,然后才能显示主要活动.
inm*_*yth 16
我的看法是,它不是关于速度或大小,而是你想要对数据进行的操作.
如果你打算做加盟,排序,和其他操作数据库上的数据,然后去sqlite的.一个例子是按日期排序数据.
如果要映射简单值(如int,boolean,String),请使用Preferences.数据库操作在这里不起作用,不用说你需要拥有所有密钥.一个例子是用户密码或应用程序配置.
拥抱Preferences的最大诱惑是当你想用它来将扁平的POJO(一个序列化的JSON对象)存储为String时.有这种需要实际上是使用Sqlite的标志.为什么?因为复杂的数据最终需要复杂的操作.想象一下,检索一个可以通过简单的"SELECT ... WHERE id = 1"处理的特定条目.在"首选项"路径中,这将是一个从反序列化到迭代结果的漫长过程.
要存储大量数据,请使用 SQLite 数据库系统。这也将允许用户搜索数据。
另一方面,要存储少量数据,请使用共享首选项。在这种情况下,不需要庞大的数据库系统。这将允许用户简单地保存数据并加载它们。
归档时间: |
|
查看次数: |
57590 次 |
最近记录: |