Android五种数据存储方式
2017-03-02 15:01
387 查看
1、分类
数据存储在开发中是使用最频繁的,Android平台中实现数据存储主要有5种方式,分别是:
SQLite: SQLite是一个轻量级嵌入式数据库,支持基本SQL语法,是常被采用的一种数据存储方式。Android为此数据库提供了一个名为SQLiteDatabase的类,封装了一些操作数据库的API。
SharedPreference:SharedPreferences也是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息。其存储位置在/data/data/<包名>/shared_prefs目录下。SharedPreferences对象本身只能读取数据而不支持写入数据,存储修改是通过Editor对象实现。常用于存储较简单的参数设置。
File: 即常说的文件(I/O)存储方法,常用语存储大数量的数据,但是缺点是更新数据将是一件困难的事情。
ContentProvider: Android系统中能实现所有应用程序共享的一种数据存储方式,由于数据通常在各应用间的是互相私密的,所以此存储方式较少使用,但是其又是必不可少的一种存储方式。例如音频,视频,图片和通讯录,一般都可以采用此种方式进行存储。每个Content Provider都会对外提供一个公共的URI(包装成Uri对象),如果应用程序有数据需要共享时,就需要使用Content Provider为这些数据定义一个URI,然后其他的应用程序就通过Content Provider传入这个URI来对数据进行操作。
网络存储数据:通过网络获取数据和写入数据到网络存储空间
小结:1~3只能用于工程内部
SQLiteDatabase:这个类里封装了对表的具体的操作的方法,比如增删改查(crud)的方法。
调用Activity对象的getPreferences()方法,只需指定MODE
每个应用有一个默认的偏好文件preferences.xml,使用PreferceManager().getDefaultSharedPreferences()来获取
前两种方式的区别:
调用Context对象的getSharedPreferences()方法获得的SharedPreferences对象可以被同一应用程序下的其他组件共享.
调用Activity对象的getPreferences()方法获得的SharedPreferences对象只能在该Activity中使用.
Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件.
Context.MODE_WORLD_READABLE用来控制其他应用是否有权限读该文件.
Context.MODE_WORLD_WRITEABLE用来控制其他应用是否有权限写该文件.
MODE_WORLD_READABLE:表示当前文件可以被其他应用读取;
MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入
唯一标识整个ContentProvider: 主机名(或叫Authority)用于唯一标识这个ContentProvider,外部调用者可以根据这个标识来找到它。
描述了数据的路径,确定返回哪类数据: 路径(path)可以用来表示我们要操作的数据,路径的构建应根据业务而定
ID唯一标注请求的数据: 我们要请求数据的ID
定义要查询的对象。
使用cr.query();返回一个Cursor对象。
使用while循环得到Cursor里面的内容,并把查询出来的数据放到对应的对象属性里。
关闭Cursor,返回查询结果
ContentProvider负责组织应用程序的数据,向其他应用程序提供数据;
ContentResolver则负责获取ContentProvider提供的数据,修改/添加/删除更新数据等
实现 ContentProvider里的onCreate方法,创建provider的数据,一般为数据库sqlite。
重写ContentProvider 中相应的insert/delete/update/query增删改查这些方法。
在AndroidManifest.xml文件中注册该ContentProvider类,为ContentProvider指定Uri。Uri类似网页访问中使用的URL地址。
在<application></application>中配置 <provider/>标签以及属性:android:name属性:ContentProvider的类名
android:authorities属性:用于访问ContentProvider的名称。
1. ContenResolver对象通过Context提供的方法getContenResolver()来获得。
2. ContenResolver提供了以下方法来操作:insert delete update query这些方法分别会调用ContenProvider中与之对应的方法并得到返回的结果。
ContentValues需要配合各种存储方式使用,完成对数据的增删改
http://wenku.baidu.com/link?url=v6y-2Lk_Tzy56ZpDq8I3eR8vXno0JNb6tL81-XpkhsuwGZ7oPF3knbfvgpOGMoGa3WwCcYbWgwqlzC5LO5KO3mOh7jSvYmWAADHWHlIddf3
http://www.cnblogs.com/smallkure/p/5294991.html
http://www.360doc.com/content/16/0319/00/31777725_543463009.shtml
数据存储在开发中是使用最频繁的,Android平台中实现数据存储主要有5种方式,分别是:
SQLite: SQLite是一个轻量级嵌入式数据库,支持基本SQL语法,是常被采用的一种数据存储方式。Android为此数据库提供了一个名为SQLiteDatabase的类,封装了一些操作数据库的API。
SharedPreference:SharedPreferences也是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息。其存储位置在/data/data/<包名>/shared_prefs目录下。SharedPreferences对象本身只能读取数据而不支持写入数据,存储修改是通过Editor对象实现。常用于存储较简单的参数设置。
File: 即常说的文件(I/O)存储方法,常用语存储大数量的数据,但是缺点是更新数据将是一件困难的事情。
ContentProvider: Android系统中能实现所有应用程序共享的一种数据存储方式,由于数据通常在各应用间的是互相私密的,所以此存储方式较少使用,但是其又是必不可少的一种存储方式。例如音频,视频,图片和通讯录,一般都可以采用此种方式进行存储。每个Content Provider都会对外提供一个公共的URI(包装成Uri对象),如果应用程序有数据需要共享时,就需要使用Content Provider为这些数据定义一个URI,然后其他的应用程序就通过Content Provider传入这个URI来对数据进行操作。
网络存储数据:通过网络获取数据和写入数据到网络存储空间
小结:1~3只能用于工程内部
2、拓展
2.1 SQLite主要通过两个类实现其功能
SQLiteOpenHelper:数据库的帮助类,是一个抽象类,定义有两个抽象方法,用于进行数据库和表的创建(onCreate(SQLiteDatabase db)),以及版本的更新(onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion))SQLiteDatabase:这个类里封装了对表的具体的操作的方法,比如增删改查(crud)的方法。
2.2 获取SharedPreferences对象的方式:
调用Context对象的getSharedPreferences()方法,可指定file name和MODE调用Activity对象的getPreferences()方法,只需指定MODE
每个应用有一个默认的偏好文件preferences.xml,使用PreferceManager().getDefaultSharedPreferences()来获取
前两种方式的区别:
调用Context对象的getSharedPreferences()方法获得的SharedPreferences对象可以被同一应用程序下的其他组件共享.
调用Activity对象的getPreferences()方法获得的SharedPreferences对象只能在该Activity中使用.
2.3 SharedPreferences的四种操作模式:
Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件.
Context.MODE_WORLD_READABLE用来控制其他应用是否有权限读该文件.
Context.MODE_WORLD_WRITEABLE用来控制其他应用是否有权限写该文件.
MODE_WORLD_READABLE:表示当前文件可以被其他应用读取;
MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入
2.4 SharedPreferences与SQLite数据库的区别
SharedPreferences对象与SQLite数据库相比,免去了创建数据库,创建表,写SQL语句等诸多操作,相对而言更加方便,简洁。但是SharedPreferences也有其自身缺陷,比如其职能存储boolean,int,float,long和String五种简单的数据类型,比如其无法进行条件查询等。所以不论SharedPreferences的数据存储操作是如何简单,它也只能是存储方式的一种补充,而无法完全替代如SQLite数据库这样的其他数据存储方式。2.5 ContentProvider与SQLite的区别
Sql只能在该工程的内部共享数据,ContentProvider能在工程之间实现数据共享。2.6 ContentProvider URI组成部分
标准的前缀: ContentProvider(内容提供者)的scheme已经由Android所规定, scheme为:content://唯一标识整个ContentProvider: 主机名(或叫Authority)用于唯一标识这个ContentProvider,外部调用者可以根据这个标识来找到它。
描述了数据的路径,确定返回哪类数据: 路径(path)可以用来表示我们要操作的数据,路径的构建应根据业务而定
ID唯一标注请求的数据: 我们要请求数据的ID
2.7 通过contentResolver获取ContentProvider内容的基本步骤
得到ContentResolver类对象:ContentResolver cr = getContentResolver();定义要查询的对象。
使用cr.query();返回一个Cursor对象。
使用while循环得到Cursor里面的内容,并把查询出来的数据放到对应的对象属性里。
关闭Cursor,返回查询结果
ContentProvider负责组织应用程序的数据,向其他应用程序提供数据;
ContentResolver则负责获取ContentProvider提供的数据,修改/添加/删除更新数据等
2.8 自定义ContentProvider的步骤
继承Android的ContentProvider基类实现自己的ContentProvider类。实现 ContentProvider里的onCreate方法,创建provider的数据,一般为数据库sqlite。
重写ContentProvider 中相应的insert/delete/update/query增删改查这些方法。
在AndroidManifest.xml文件中注册该ContentProvider类,为ContentProvider指定Uri。Uri类似网页访问中使用的URL地址。
在<application></application>中配置 <provider/>标签以及属性:android:name属性:ContentProvider的类名
android:authorities属性:用于访问ContentProvider的名称。
2.9 Android中访问自定义ContentProvider
通过ContentProvider的Uri访问开放的数据。1. ContenResolver对象通过Context提供的方法getContenResolver()来获得。
2. ContenResolver提供了以下方法来操作:insert delete update query这些方法分别会调用ContenProvider中与之对应的方法并得到返回的结果。
2.10 ContentValues的使用
ContentValues 和HashTable类似都是一种存储的机制 但是两者最大的区别就在于,contenvalues只能存储基本类型的数据,像string,int之类的,不能存储对象这种东西,而HashTable却可以存储对象。ContentValues需要配合各种存储方式使用,完成对数据的增删改
http://wenku.baidu.com/link?url=v6y-2Lk_Tzy56ZpDq8I3eR8vXno0JNb6tL81-XpkhsuwGZ7oPF3knbfvgpOGMoGa3WwCcYbWgwqlzC5LO5KO3mOh7jSvYmWAADHWHlIddf3
http://www.cnblogs.com/smallkure/p/5294991.html
http://www.360doc.com/content/16/0319/00/31777725_543463009.shtml
相关文章推荐
- Android数据存储五种方式总结
- Android数据的五种存储方式
- Android数据存储五种方式总结
- Android数据存储五种方式总结<转载>
- Android中常用的五种数据存储方式
- android 数据存储五种方式总结
- android数据存储的五种方式
- [Android] 数据存储五种方式使用与总结
- Android的五种数据存储方式
- 专题一====Android五种数据存储方式
- Android实现数据存储技术 de 五种方式
- Android中的数据存储的五种方式
- Android数据存储五种方式总结
- Android数据存储五种方式总结
- 专题一====Android五种数据存储方式
- Android五种数据存储方式
- Android数据存储五种方式总结
- [Android] 数据存储五种方式使用与总结
- Android数据存储五种方式总结
- Android五种数据存储方式