共享首选项和sqlite之间的区别

时间:2012-03-06 19:42:03

标签: android

我知道之前在Stack Overflow上讨论过这个话题。但是,当我阅读之前关于它的帖子时,仍有一些事情尚不清楚。所以这里是:

  • 我知道我们使用小数据集的共享首选项和大数据操作的sqlite,所以如果我们只想保存用户名和密码,我们应该使用共享首选项吗?
  • 用户卸载应用时,不会丢失共享首选项吗?例如,我下载了一个名为abc的应用程序并保存了我的用户名和密码。然后我从一部手机上卸载这个应用程序并尝试使用相同的用户名和密码从其他手机访问它。这是使用共享首选项保存还是丢失数据?
  • 除大型和小型数据集外,我们使用其中一个的主要原因是什么?

6 个答案:

答案 0 :(得分:19)

您可以根据数据大小来考虑共享首选项和SQLite数据库之间的区别,但这并不完全准确。考虑它的更好方法是根据要存储的数据结构。

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

这两个数据源都是本地的,但您应该注意的是能够将应用程序数据备份到与用户的Google帐户关联的云存储。这使您的用户更容易更改设备和应用程序,以便轻松转移到新设备。有关详细信息,请查看here

答案 1 :(得分:4)

在您描述的情况下,您将在两种情况下丢失用户名和密码。数据存储在手机上,当您卸载应用程序时,与其相关的数据也将丢失。用户必须重新输入此信息。

您可以保存用户名并传入共享首选项或数据库,这是个人首选项。只需确保您向下锁定,即不要共享保存此信息的数据库或共享首选项。

至于差异......共享首选项应该保持良好...共享首选项...这是一个例子:

如果我创建一个更改背景颜色的选项,我会将所有可用选项存储在DB中,可以将其加载到适配器视图中供用户选择。但我会在共享首选项中存储他们选择的颜色。这样,当应用程序加载时,我可以获得应该使用的背景颜色的共享首选项值。

答案 2 :(得分:3)

SharedPreferences用于此目的,存储在应用程序范围内共享的用户首选项。例如,您可以使用它来存储用户的用户名,或者他或她在您的应用中配置的一些您想要记住的选项。

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

两者都存储在设备本地。

答案 3 :(得分:2)

1.SharedPreferences只存储Boolean,int,float,long,String五种简单数据类型,例如不能条件查询。所以,SharedPreferences数据存储操作是否有多么简单,只能是存储的补充,但不能完全替代其他数据,如SQLite数据库的存储。

2.SharedPreferences基于XML文件存储用于存储配置信息的键值键(主要是用户对应用程序的偏好)。

3.Sharedprefrece就像网络中的cookies一样,在客户端存储一些基本信息。

答案 4 :(得分:1)

都在本地存储他们的数据,因此卸载应用程序将删除两者。除此之外,SharedPreferences更容易编程,你对数据量是正确的。

答案 5 :(得分:0)

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

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

相关问题