我知道之前在Stack Overflow上讨论过这个话题。但是,当我阅读之前关于它的帖子时,仍有一些事情尚不清楚。所以这里是:
答案 0 :(得分:19)
您可以根据数据大小来考虑共享首选项和SQLite数据库之间的区别,但这并不完全准确。考虑它的更好方法是根据要存储的数据结构。
共享首选项只能存储键值配对,而SQLite数据库则更灵活。因此,共享偏好对于存储用户偏好特别有用,例如,该应用程序应该显示通知等。虽然SQLite数据库几乎可以用于任何事情。
这两个数据源都是本地的,但您应该注意的是能够将应用程序数据备份到与用户的Google帐户关联的云存储。这使您的用户更容易更改设备和应用程序,以便轻松转移到新设备。有关详细信息,请查看here。
答案 1 :(得分:4)
在您描述的情况下,您将在两种情况下丢失用户名和密码。数据存储在手机上,当您卸载应用程序时,与其相关的数据也将丢失。用户必须重新输入此信息。
您可以保存用户名并传入共享首选项或数据库,这是个人首选项。只需确保您向下锁定,即不要共享保存此信息的数据库或共享首选项。
至于差异......共享首选项应该保持良好...共享首选项...这是一个例子:
如果我创建一个更改背景颜色的选项,我会将所有可用选项存储在DB中,可以将其加载到适配器视图中供用户选择。但我会在共享首选项中存储他们选择的颜色。这样,当应用程序加载时,我可以获得应该使用的背景颜色的共享首选项值。
答案 2 :(得分:3)
SharedPreferences
用于此目的,存储在应用程序范围内共享的用户首选项。例如,您可以使用它来存储用户的用户名,或者他或她在您的应用中配置的一些您想要记住的选项。
SQLite是一个关系数据库。它用于存储应用程序的数据,而不是首选项或配置信息。
两者都存储在设备本地。
答案 3 :(得分:2)
2.SharedPreferences基于XML文件存储用于存储配置信息的键值键(主要是用户对应用程序的偏好)。
3.Sharedprefrece就像网络中的cookies
一样,在客户端存储一些基本信息。
答案 4 :(得分:1)
都在本地存储他们的数据,因此卸载应用程序将删除两者。除此之外,SharedPreferences更容易编程,你对数据量是正确的。
答案 5 :(得分:0)
通常,如果您希望允许用户直接操作某些数据字段,则应使用共享首选项。共享偏好基本上是用户偏好;如果您希望用户重新配置应用程序以使用不同的方式,则应将该功能公开为共享首选项。另一方面,如果您想要将数据的可见性限制为仅仅应用程序,如果您希望更强地保证数据是持久的,并且您希望应用程序的行为独立于什么,则应使用SQLite数据库。存储在数据库中。当然,您可以在一个应用程序中使用它们。
共享首选项和数据库是应用程序存储的本地数据的一部分。如果卸载该应用程序,则将删除这两个数据存储。