数据存储在开发中是使用最频繁的,Android平台中实现数据存储主要有5种方式,分别是:
1 SQLite: SQLite是一个轻量级嵌入式数据库,支持基本SQL语法,是常被采用的一种数据存储方式。Android为此数据库提供了一个名为SQLiteDatabase的类,封装了一些操作数据库的API。
2 SharedPreference:SharedPreferences也是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息。其存储位置在/data/data/<包名>/shared_prefs目录下。SharedPreferences对象本身只能读取数据而不支持写入数据,存储修改是通过Editor对象实现。常用于存储较简单的参数设置。
3 File: 即常说的文件(I/O)存储方法,常用语存储大数量的数据,但是缺点是更新数据将是一件困难的事情。
4 ContentProvider: Android系统中能实现所有应用程序共享的一种数据存储方式,由于数据通常在各应用间的是互相私密的,所以此存储方式较少使用,但是其又是必不可少的一种存储方式。例如音频,视频,图片和通讯录,一般都可以采用此种方式进行存储。每个Content Provider都会对外提供一个公共的URI(包装成Uri对象),如果应用程序有数据需要共享时,就需要使用Content Provider为这些数据定义一个URI,然后其他的应用程序就通过Content Provider传入这个URI来对数据进行操作。
5 网络存储数据:通过网络获取数据和写入数据到网络存储空间
SQLite主要通过两个类实现其功能
SQLiteOpenHelper:这个类是数据库的帮助类;用来进行数据库的创建;表的创建,以及版本的更新
SQLiteDatabase:这个类里封装了对表的具体的操作的方法,比如增删改查的方法。
SharedPreferences与SQLite数据库的区别
SharedPreferences对象与SQLite数据库相比,免去了创建数据库,创建表,写SQL语句等诸多操作,相对而言更加方便,简洁。但是SharedPreferences也有其自身缺陷,比如其职能存储boolean,int,float,long和String五种简单的数据类型,比如其无法进行条件查询等。所以不论SharedPreferences的数据存储操作是如何简单,它也只能是存储方式的一种补充,而无法完全替代如SQLite数据库这样的其他数据存储方式。
ContentProvider与SQLite的区别
Sql只能在该工程的内部共享数据,ContentProvider能在工程之间实现数据共享。
ContentProvider URI组成部分
A,标准的前缀: ContentProvider(内容提供者)的scheme已经由Android所规定, scheme为:content://
B,唯一标识整个Content Provider: 主机名(或叫Authority)用于唯一标识这个ContentProvider,外部调用者可以根据这个标识来找到它。
C,描述了数据的路径,确定返回哪类数据: 路径(path)可以用来表示我们要操作的数据,路径的构建应根据业务而定
ID唯一标注请求的数据: 我们要请求数据的ID
通过contentResolver获取ContentProvider内容的基本步骤
第一:得到ContentResolver类对象:ContentResolver cr = getContentResolver();
第二:定义要查询的字段String数组。
第三:使用cr.query();返回一个Cursor对象。
第四:使用while循环得到Cursor里面的内容。
自定义ContentProvider的步骤
1. 继承Android的ContentProvider基类实现自己的ContentProvider类。
2. 实现 ContentProvider里的onCreate方法,创建provider的数据,一般为数据库sqlite。
3. 重写ContentProvider 中相应的insert/delete/update/query增删改查这些方法。
4. 在AndroidManifest.xml文件中注册该ContentProvider类,为ContentProvider指定Uri。Uri类似网页访问中使用的URL地址。
在<application></application>中配置 <provider/>标签以及属性:android:name属性:ContentProvider的类名
android:authorities属性:用于访问ContentProvider的名称。
Android中访问自定义ContentProvider
通过ContentProvider的Uri访问开放的数据。
(1)ContenResolver对象通过Context提供的方法getContenResolver()来获得。
(2)ContenResolver提供了以下方法来操作:insert delete update query这些方法分别会调用ContenProvider中与之对应的方法并得到返回的结果。
http://www.360doc.com/content/16/0319/00/31777725_543463009.shtml