作为一个完整的应用程序,数据存储操作是必不可少的。因此,Android系统一共提供了四种数据存储方式。分别是:SharePreference、文件存储、SQLite、 Content Provider。对这几种方式的不同和应用场景整理如下。
第一种: 使用SharedPreferences存储数据
  适用范围:保存少量的数据,且这些数据的格式非常简单:字符串型、基本类型的值。比如应用程序的各种配置信息(如是否打开音效、是否使用震动效果、小游戏的玩家积分等),解锁口 令密码等
  核心原理:保存基于XML文件存储的key-value键值对数据,通常用来存储一些简单的配置信息。通过DDMS的File Explorer面板,展开文件浏览树,很明显SharedPreferences数据总是存储在/data/data//shared_prefs目录下。SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改是通过SharedPreferences.edit()获取的内部接口Editor对象实现。 SharedPreferences本身是一 个接口,程序无法直接创建SharedPreferences实例,只能通过Context提供的getSharedPreferences(String name, int mode)方法来获取SharedPreferences实例,该方法中name表示要操作的xml文件名,第二个参数具体如下:
  Context.MODE_PRIVATE: 指定该SharedPreferences数据只能被本应用程序读、写。
  Context.MODE_WORLD_READABLE: 指定该SharedPreferences数据能被其他应用程序读,但不能写。
  Context.MODE_WORLD_WRITEABLE: 指定该SharedPreferences数据能被其他应用程序读,写
  SharedPreferences对象与SQLite数据库相比,免去了创建数据库,创建表,写SQL语句等诸多操作,相对而言更加方便,简洁。但是SharedPreferences也有其自身缺陷,比如其职能存储boolean,int,float,long和String五种简单的数据类型,比如其无法进行条件查询等。所以不论SharedPreferences的数据存储操作是如何简单,它也只能是存储方式的一种补充,而无法完全替代如SQLite数据库这样的其他数据存储方式。
第二种: 文件存储数据
  可以在设备本身的存储设备或者外接的存储设备中创建用于保存数据的文件。同样在默认的状态下,文件是不能在不同的程序间共享。
  写文件:调用Context.openFileOutput()方法根据指定的路径和文件名来创建文件,这个方法会返回一个FileOutputStream对象。
  读取文件:调用Context.openFileInput()方法通过制定的路径和文件名来返回一个标准的Java FileInputStream对象。
第三种:SQLite存储数据
  SQLite Database数据库。Android对数据库的支持很好,它本身集成了SQLite数据库,每个应用都可以方便的使用它,或者更确切的说,Android完全依赖于SQLite数据库,它所有的系统数据和用到的结构化数据都存储在数据库中。 它具有以下优点: a. 效率出众,这是无可否认的 b. 十分适合存储结构化数据 c. 方便在不同的Activity,甚至不同的应用之间传递数据。  
第四种:ContentProvider
  Android系统中能实现所有应用程序共享的一种数据存储方式,由于数据通常在各应用间的是互相私密的,所以此存储方式较少使用,但是其又是必不可少的一种存储方式。例如音频,视频,图片和通讯录,一般都可以采用此种方式进行存储。每个ContentProvider都会对外提供一个公共的URI(包装成Uri对象),如果应用程序有数据需要共享时,就需要使用ContentProvider为这些数据定义一个URI,然后其他的应用程序就通过Content Provider传入这个URI来对数据进行操作。
  总结一下,文件适用于存储一些简单的文本数据或者二进制数据,SharedPreferences适用于存储一些键值对,而数据库则适用于那些复杂的关系型数据。

最新文章

  1. Leetcode--Swap Nodes in Pairs
  2. Atitit.git的存储结构and 追踪
  3. 远程调用jboss as 7上部署的ejb出现No EJB receiver available for handling 异常
  4. 关于Java中的构造方法和set方法()给属性赋值
  5. C++链式继承
  6. pwntools安装使用方法
  7. Java 通过 BufferReader 实现 文件 写入读取 示例
  8. Java的结构之美【1】——构造对象
  9. Oracle表介绍--簇表
  10. ThinkPHP5.0中Redis的使用和封装(原创)
  11. opnet的simple_source模块学习 分类: opnet 2014-05-18 09:50 170人阅读 评论(0) 收藏
  12. 201521123071 《JAVA程序设计》第六周学习总结
  13. Linux基本符号
  14. monkey Test 环境配置
  15. Java概念、语法和变量基础整理
  16. HBase最佳实践-管好你的操作系统
  17. OAuth2的基本概念的理解
  18. TP中模型实例化
  19. ECMAScript 6 | 新特性
  20. Graphics Card Notes | 烧卡日记(显卡常识笔记)

热门文章

  1. 计算照片的面积(UWP篇)
  2. 高性能JavaScript--加载和执行(简要学习笔记一)
  3. 实验:Oracle直接拷贝物理存储文件迁移
  4. 从273二手车的M站点初探js模块化编程
  5. 欢迎阅读daxnet的新博客:一个基于Microsoft Azure、ASP.NET Core和Docker的博客系统
  6. Google地图开发总结
  7. Github pages + jekyll 博客快速搭建
  8. GridView中显示时间日期格式问题
  9. 第四篇 Entity Framework Plus 之 Batch Operations
  10. apache中怎么配置网站的默认首页