Android应用程序开发 课件 第8章 Android核心组件—ContentProvider.pptx

Android应用程序开发 课件 第8章 Android核心组件—ContentProvider.pptx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

第8章Android核心组件—ContentProvider;本章简介;本章目录;8.1ContentProvider简介;对于ContentProvider来说,最重要的三个概念是数据模型、URI和ContentResolver。

(1)数据模型

ContentProvider以数据表的方式将其内部存储的数据提供给外部访问者使用。在数据表中,每一行数据就是一条记录,而每一列数据则是具有特定类型和意义的属性。每一条数据记录都包含一个名为“_ID”的属性字段,用于唯一的标识一条记录。

(2)URI

每一个ContentProvider都会向外提供若干能够唯一标识自身数据集的公开URI。如果ContentProvider管理多个数据集,它将为各个数据集分配一个独立的URI。几乎所有的ContentProvider操作都会使用到URI,如果要自定义一个ContentProvider子类,可将URI定义为常量。

(3)ContentResolver

ContentResolver类提供了可以对ContentProvider中的数据进行查询、插入、修改和删除等操作的一系列方法。ContentResolver与ContentProvider是一种多对多的关系。当ContentProvider在单实例模式下运行时,如果有多个应用程序使用ContentResolver访问ContentProvider,那么由ContentResolver调用的数据访问操作将委托给同一个ContentProvider处理。

;8.2ContentProvider的共享数据模型;从ContentProvider、ContentResolver和URI的关系来看,无论是ContentProvider还是ContentResolver,它们所提供的CRUD操作(对数据记录的增、删、改、查)对象都是URI。即,URI是ContentProvider和ContentResolver进行数据交互的标识。此外,由ContentResolver执行的CRUD操作并不是直接作用在URI上,而是通过委托给该URI所对应的ContentProvider实现的。

(1)当应用程序A调用ContentResolver的insert()方法时,相当于调用了绑定了该URI的ContentProvider(属于应用程序B)的insert()方法。

(2)当应用程序A调用ContentResolver的update()方法时,相当于调用了绑定了该URI的ContentProvider的update()方法。

(3)当应用程序A调用ContentResolver的delete()方法时,相当于调用了绑定了该URI的ContentProvider的delete()方法。

(4)当应用程序A调用ContentResolver的query()方法时,相当于调用了绑定了该Uri的ContentProvider的query()方法。;8.3URI;content://com.demo.datashare/books

可将该URI的内容划分成三个不同的部分:

(1)content://:它是URI的标准前缀。???似于访问Web网页经常用到的http协议,访问ContentProvider的默认协议是content。

(2)com.demo.datashare:它是ContentProvider的authorities。为区分不同应用程序的共享资源,避免资源命名冲突,可将authorities设置成应用程序的包名。

(3)books:标识共享的资源。一个ContentProvider可共享多张数据表,即多个不同的共享资源。对于各个共享资源,都需要定义出唯一的标识符路径。当需要访问不同资源时,该部分内容是动态改变的。

此外,URI还可以有这个形式:content://com.demo.datashare/books/2

它表示要访问的资源为books数据表中ID为2的记录。

URI甚至还可以有这个形式:content://com.demo.datashare/books/2/line2

它表示要访问的资源为books数据表中ID为2的记录的line2字段。

当得到了ContentProvider提供的URI字符串后,需要将其解析成Uri对象才能作为ContentReslover访问共享数据的输入参数。可使用Uri.parse()方法将URI字符串解析成Uri对象。例如,可使用下述代码解析上文给定的URI字符串:

Uriuri=Uri.parse(“content://com.demo.datashare/books”)

;8.4ContentResolver;(1)insert

文档评论(0)

balala11 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档