- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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
您可能关注的文档
- Python程序设计基础-教案.docx
- Python程序设计基础-教学日历.doc
- Python程序设计基础课后习题答案.docx
- Python程序设计基础-教学课件 第1章 Python语言概述.pptx
- Python程序设计基础-教学课件 第2章 基础语法.pptx
- Python程序设计基础-教学课件 第3章 程序控制结构.pptx
- Python程序设计基础-教学课件 第4章 组合数据类型.pptx
- Python程序设计基础-教学课件 第5章 字符串.pptx
- Python程序设计基础-教学课件 第6章 函数.pptx
- Python程序设计基础-教学课件 第7章 文件和异常处理.pptx
- 【上交所-2025研报】西藏旅游2025年半年度报告.pdf
- 【港交所-2025研报】安井食品 2025中期报告.pdf
- 【港交所-2025研报】德基科技控股 中期报告2025.pdf
- 【KPMG China-2025研报】中国对外绿地投资:从“走出去”到“走进去”,深入本土化运营.pdf
- 【上交所-2025研报】海航科技股份有限公司2025年半年度报告.pdf
- 【上交所-2025研报】宁波精达2025年半年度报告.pdf
- 【港交所-2025研报】乐舱物流 2025年中期报告.pdf
- 【港交所-2025研报】绿色动力环保 2025 中期报告.pdf
- 【上交所-2025研报】成都立航科技股份有限公司2025年半年度报告.pdf
- 【上交所-2025研报】科力远2025年半年度报告.pdf
文档评论(0)