android的数据存储方式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android的数据存储方式相关的知识,希望对你有一定的参考价值。

数据存储在开发中是使用最频繁的,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:这个类里封装了对表的具体的操作的方法,比如增删改查的方法。

SharedPreferencesSQLite数据库的区别

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://wenku.baidu.com/link?url=v6y-2Lk_Tzy56ZpDq8I3eR8vXno0JNb6tL81-XpkhsuwGZ7oPF3knbfvgpOGMoGa3WwCcYbWgwqlzC5LO5KO3mOh7jSvYmWAADHWHlIddf3

 http://www.360doc.com/content/16/0319/00/31777725_543463009.shtml

以上是关于android的数据存储方式的主要内容,如果未能解决你的问题,请参考以下文章

Android数据存储的三种方式-SharedPrefrences,File,SQLite

Android中数据存储——SQLite数据库存储数据

详解Android中的SQLite数据库存储

Android五种数据存储方式

android的数据存储方式

请介绍下Android的数据存储方式。