2012-03-06 111 views
10

我知道这个话题已经在Stack Overflow上讨论过了。但是当我阅读以前的文章时,仍然有一些不清楚的地方。所以,在这里,他们是:共享首选项和sqlite的区别

  • 我知道,我们使用共享偏爱小型数据集和SQLite,大数据处理,所以如果我们只是想保存用户名和密码,我们应该使用共享偏好?
  • 用户卸载应用程序时,共享偏好设置是否会丢失?例如,我下载一个名为abc的应用程序并保存我的用户名和密码。然后我从一部手机上卸载这个应用程序,并尝试使用相同的用户名和密码从其他手机访问它。这是使用共享偏好保存还是数据丢失?
  • 除了大小数据集之外,我们使用其中一个的主要原因是什么?
+0

我也有问题!我想存储一些字符串和整数数据,用户填写它们(我想存储无限项目编号)。请帮助我哪个更适合这种情况?谢谢! – 2015-03-08 11:05:27

回答

18

你可以认为在数据大小方面共享偏好和SQLite数据库之间的差别,但不是完全准确。更好的方式来考虑它是根据您要存储的数据的结构。

共享偏好只能存储键 - 值配对,而SQLite数据库要灵活得多。因此,共享偏好对于存储用户偏好特别有用,例如,应该显示通知等应用程序。而SQLite数据库几乎可以用于任何事情。

两个数据源是本地的,但你应该知道的是能够备份你的应用程序数据,云存储链接到用户的谷歌账户。这使您的用户更容易更换设备并使其应用轻松转移到新设备。欲了解更多信息,请看看here。仅

1

两个存储数据在本地,所以卸载应用程序将同时删除。除此之外,SharedPreferences更容易编程,并且您对数据量是正确的。

+0

所以即使使用sqlite我也不能保存数据?那么你如何保存数据?如果您无法保存或检索用户名和密码,那么使用这些内容有什么意义? – NoviceMe 2012-03-06 19:51:26

+0

只要用户不删除应用程序,您就可以保存数据。如果您希望数据在用户删除并重新安装应用程序时保持不变,则需要设置您的网络服务器。 – 2012-03-06 23:32:49

0

一般来说,如果您希望允许用户直接操作某些数据字段,则应使用共享首选项。共享偏好基本上是用户偏好;如果您希望用户重新配置应用以不同方式运行,则应该将该功能作为共享首选项公开。另一方面,如果你想限制数据的可见性仅限于应用程序,如果你想更强有力地保证数据是持久的,并且如果你希望应用程序的行为独立于SQLite数据库,那么应该使用SQLite数据库存储在数据库中。当然,你可以在一个应用程序中使用这两个。

共享首选项和数据库是应用程序存储的本地数据的一部分。如果您卸载应用程序,则两个数据存储都将被删除。

4

在你描述的情况下,你将在两种情况下丢失用户名和密码。数据存储在手机上,当您卸载应用程序时,某些带有数据的数据也将丢失。用户将不得不重新输入这些信息。

可以保存用户名和传球无论是在共享偏好或DB,这是个人喜好。只要确保你锁定已停机,即不同意你保持在这个信息的数据库或共享偏好。

至于差异...共享偏好应持有好...共享偏好...这里有一个例子:

如果我创建一个选项来改变背景颜色,我将存储在可装入供用户选择适配器视图中的数据库中的所有可用的选项。但是我会将他们在共享首选项中选择的颜色存储起来。这样当应用程序加载时,我可以获得应该使用的背景色的共享偏好值。

3

SharedPreferences用于只是,存储共享应用程序范围内的用户偏好。例如,您可以使用它来存储用户的用户名,也可以使用他或她在您想要记住的应用程序中配置的某些选项。

SQLite是一个关系型数据库。它用于存储应用程序的数据,而不是首选项或配置信息。

两者都存储在设备上本地。

+0

那么,即使在用户卸载应用程序后,我们会如何确保我们拥有用户名和密码? – NoviceMe 2012-03-06 20:30:29

+0

使用您的应用程序连接到的网络服务器并将数据保存在那里。 – 2012-03-06 23:33:51

2

1.SharedPreferences存储布尔值,整数,浮点,长字符串5种简单数据类型,诸如不能是有条件的查询。所以,SharedPreferences数据存储操作是多么简单,它只能作为存储的补充,但不能完全替代其他数据,如SQLite数据库存储。基于XML的文件

2.SharedPreferences存储用于存储配置信息(主要是用户的喜好为您的应用)的键值项。

3.Sharedprefrece只是想在网络cookies其存储在客户端的一些基本信息。