做为一个完整的应用程序,数据存储操做是必不可少的。所以,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适用于存储一些键值对,而数据库则适用于那些复杂的关系型数据。数据库