Java 使用哪种Android数据存储技术?

Java 使用哪种Android数据存储技术?,java,android,sqlite,sharedpreferences,data-storage,Java,Android,Sqlite,Sharedpreferences,Data Storage,android文档有以下选项,但没有解释每种情况最适合哪种情况。每种方法的优缺点是什么?e、 g.在什么条件下SQL比共享首选项更好 共享首选项 内部存储器 外部存储器 SQLite数据库 网络连接 共享首选项是键/值对,仅此而已。所以,如果你想跟踪,比如说,学生和他们的考试成绩,这真的不会很好 数据库就是一个数据库。您可以根据需要定义任意多的列(和表)来完成工作 如果是应用程序的首选项,请使用共享首选项(我能想到的几乎所有首选项都可以这样做),如果是其他更复杂的,请使用数据库 共享首选项有

android文档有以下选项,但没有解释每种情况最适合哪种情况。每种方法的优缺点是什么?e、 g.在什么条件下SQL比共享首选项更好

  • 共享首选项
  • 内部存储器
  • 外部存储器
  • SQLite数据库
  • 网络连接

    • 共享首选项是键/值对,仅此而已。所以,如果你想跟踪,比如说,学生和他们的考试成绩,这真的不会很好

      数据库就是一个数据库。您可以根据需要定义任意多的列(和表)来完成工作

      如果是应用程序的首选项,请使用共享首选项(我能想到的几乎所有首选项都可以这样做),如果是其他更复杂的,请使用数据库

      • 共享首选项有利于存储。。。应用程序的首选项和其他少量数据。它是一个非常简单的持久字符串键存储,用于一些数据类型:boolean、float、int、long和string。例如,如果我的应用程序有一个登录名,我可能会考虑将会话密钥作为StryPraseString中的字符串存储。
      • 内部存储适用于存储用户不需要访问的应用程序数据,因为用户无法轻松访问内部存储。可能适用于缓存、日志等。只有应用程序打算创建的任何内容都将被读取、更新或删除
      • 外部存储。与我刚才说的相反,这太好了。dropbox应用程序可能使用外部存储来存储用户的dropbox文件夹,以便用户可以在dropbox应用程序之外轻松访问这些文件,例如,使用文件管理器

      • SQLite每当您要使用大量结构化数据和一个相对严格的模式来管理它时,数据库都是非常棒的。用外行的话说,SQLite类似于MySQL或PostgreSQL,只是数据库没有充当服务器守护进程,然后从php之类的CGI脚本接收查询,它只是存储在一个.db文件中,并通过应用程序中的一个简单库进行访问和查询。虽然SQLite不能像专用数据库那样扩展,但对于较小的应用程序(如Android应用程序)来说,它非常快速和方便。如果我正在制作一个用于聚合和下载食谱的应用程序,我会使用SQLite db,因为这种数据是相对结构化的,而且数据库可以很好地扩展。数据库很好,因为将您的所有数据写入一个文件,然后以您自己的专有格式对其进行解析并没有什么乐趣。再说一次,用XML或JSON存储数据也不会那么糟糕

      • 网络连接指在云端存储数据。HTTP或FTP文件和内容通过java.net.*包进行传输


      SharedReferences主要用于特定于应用程序的设置,您可以通过设置菜单(如应用程序设置)访问这些设置。在这里保持一切简单是一个好主意——主要是布尔标志、短字符串或整数。SharedReferences数据在设备重新启动时保留,并随应用程序卸载一起删除。数据保存为键值对

      内部存储主要用于较大的非持久性数据存储。如果要处理图像、短视频剪辑、大文本文件等,可以使用内部存储器。但处理后的数据不存储在内部存储器中,其功能更像CPU的RAM。应用程序的可用内部存储容量取决于设备,但最好将内存保持在1MB以下。数据通过其文件路径被引用

      外部存储不仅指SD卡存储,对于高端手机,这可能意味着内部可安装存储(如Galaxy Nexus或S2)。这是存储要在应用程序中解析的大型视频文件、高分辨率图像和20 MB文本文件的位置。这也是一个存储数据的地方,如果您交换sd卡,您希望在设备之间共享这些数据。数据也通过其文件路径被引用

      SQLite Databases是在常规数据库中存储几乎任何您想要的内容的地方,它的优点是将内容组织到表、行和列中。它最适用于您希望在UI中显示为列表的内容——最好的例子是伟大的发明CursorAdapter。存储在此处的数据也会在设备重新启动时保留,并会随着应用程序卸载而删除。如果将sqlite db连接到ContentProvider,则还可以在应用程序之间使用sqlite db共享数据。数据是通过一个函数访问的,在这个函数中,您可以像执行sql语句一样调用方法

      网络连接实际上不是一种数据存储技术,但可以是一种为特定用户保存数据的方法,前提是设备连接到internet,使用某种身份验证。您必须在每次应用程序需要数据时下载数据,或进行一次性数据同步之间取得平衡,这最终会导致上述另一种存储选项。

      Android中的不同存储选项


      内容提供商

      • 假设从application1添加到设备的结构化数据是 同一设备中的其他应用程序2无法访问,但 通过
        application1
        添加到设备的配置文件照片可供 在同一设备中运行的
        应用程序2

      • 将android设备视为一座城市,其中的应用程序是 城市中的房屋,房屋中的人(应用程序)是数据。 现在,内容提供商就像城市里的一个经纪人(安卓设备)。 这个经纪人为城市里的人们提供访问权