Content Providers

Content providers 是一个所有应用都能访问的“数据库”,它也是android系统中唯一一个所有应用都能访问的存储区。
android系统本身就有自带的Content providers 如(audio ,video,personal contact information 等)。如果你想让你的数据也共享的话,你有两种方式可以实现:第一种:创建一个自己的Provider(这个Provider要继承Content providers)第二种:将你的数据添加到一个已存在的Provider中,当然这是要符合你的数据类型并且你有权限这样做。

Content Provider Basics

Content providers 在实际中如何存储数据这是设计者决定的。但是Content providers 为增,删,改,查统一了一个统一的接口。
Content providers通常不是直接使用的,而是通过ContentResolver这个类。
ContentResolver cr = getContentResolver(); 
你可以用ContentResolver类中的方法去和任意一个你需要的content provider交互。
当一个命令发起时,系统会标识Content provider 是否存在并且确保它是已经运行着的。这实例化Content Provider的事情是系统来处理的,不需要你自己来处理。实际上,你从不直接处理Content Providers 。通常Content Provider只有一个实例(Singleton)。但是它却能和多个不同的应用交互。

The data model

Content providers 使数据像存储在数据库表中一样展示给我们,每一行代表一条记录,每一列代表一个字段。
_IDNUMBERNUMBER_KEYLABELNAMETYPE
13(425) 555 6677425 555 6677Kirkland officeBully PulpitTYPE_WORK
44(212) 555-1234212 555 1234NY apartmentAlan VainTYPE_HOME
45(212) 555-6657212 555 6657Downtown officeAlan VainTYPE_MOBILE
53201.555.4433201 555 4433Love NestRex CarsTYPE_HOME
在每条记录中,都会包含一个字段 _ID ,它用来标识它在表中的唯一性。
Content providers 在执行搜索时,都会返回一个Cursor “指针”对象。这样搜索就能在每一行每一列进行了。
每个content providers 都有一个公开的URI,这个URI用来唯一标识一个content providers 。一个content providers中有多个数据表,我们也用单独的一个URI来标识它。标识providers的所有URI都是以“content://”开始。
如果你要定义一个content providers ,你最好也给它定义一个URI常量,这样不但简便了客户端代码的编写,也简便了以后的更新。
所以URI这个标识是很重要的,每一个ContentResolver中的方法都将URI作为第一个参数。这个URI标识说明了ContentResolver要和哪个Content provider 对话。

Querying a Content Provider

查寻content provider,你需要三个信息:
1.标识出provider的URI 
2.你要得到的数据所在字段的名称
3.数据的类型

Making the query

查寻content providers的方法有ContentResolver.query()和Activity.managerQuery().这个方法的参数都是一样的,并且两个方法都返回一个Cursor对象。区别是managerQuery()方法使activity负责Cursor对象的生命周期。这是很有好处的,因为指针对象会随着activity生命周期的开始而开始,结束而结束。当然你也可以让ContentResolver.query()所返回的Cursor被activity管理,你只要调用Activity.startManagingCursor()就可以了。
如果想查寻一条记录要怎么做呢?你只要把_ID加到URI
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值