- 1、本文档共19页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Android应用程序组件Content Provider的共享数据更新通知机制分析
在Android系统中,应用程序组件Content Provider为不同的应用程序实现数据共享提供了基础设施,它主要通过Binder进程间通信机制和匿名共享内存机制来实现的。关于数据共享的另一个话题便是数据更新通知机制了,即如果一个应用程序对共享数据做了修改,它应该如何通知其它正在使用这些共享数据的应用程序呢?本文将分析Content Provider的共享数据更新通知机制,为读者解答这个问题。
Android应用程序组件Content Provider中的数据更新通知机制和Android系统中的广播(Broadcast)通知机制的实现思路是相似的。在Android的广播机制中,首先是接收者对自己感兴趣的广播进行注册,接着当发送者发出这些广播时,接收者就会得到通知了。更多关于Android系统的广播机制的知识,可以参考前面 这一系列文章。然而,Content Provider中的数据监控机制与Android系统中的广播机制又有三个主要的区别,一是前者是通过URI来把通知的发送者和接收者关联在一起的,而后者是通过Intent来关联的,二是前者的通知注册中心是由ContentService服务来扮演的,而后者是由ActivityManagerService服务来扮演的,三是前者负责接收数据更新通知的类必须要继承ContentObserver类,而后者要继承BroadcastReceiver类。之所以会有这些区别,是由于Content Proivder组件的数据共享功能本身就是建立在URI的基础之上的,因此专门针对URI来设计另外一套通知机制会更实用和方便,而Android系统的广播机制是一种更加通用的事件通知机制,它的适用范围会更广泛一些。
与分析Android系统的广播机制类似,我们把Content Provider的数据更新机制划分为三个单元进行分析,第一个单元是ContentService的启动过程,第二个单元是监控数据变化的ContentObserver的注册过程,第二个单元是数据更新通知的发送过程。
与前面两篇文章 和 一样,本文仍然以 这篇文章介绍的应用程序为例来分析Content Provider的数据更新机制。
1. ContentService的启动过程分析
前面提到,在Content Provider的数据更新通知机制中,ContentService扮演者ContentObserver的注册中心的角色,因此,它必须要系统启动???时候就启动起来,以便后面启动起来的应用程序可以使用它。在前面这篇文章 中,我们提到,Android系统进程Zygote在启动的时候,在启动一个System进程来加载系统的一些关键服务,而ContentService就这些关键服务之一了。在System进程中,负责加载系统关键服务的类为SystemServer类,它定义在frameworks/base/services/Java/com/android/server/SystemServer.java文件中,它会通过启动一个线程SystemThread来加载这些关键服务:
[java] view plain copy 在CODE上查看代码片派生到我的代码片
class ServerThread extends Thread {
......
@Override
public void run() {
......
Looper.prepare();
// Critical services...
try {
......
ContentService.main(context,
factoryTest == SystemServer.FACTORY_TEST_LOW_LEVEL);
......
}catch (RuntimeException e) {
......
}
......
Looper.loop();
......
}
}
ContentService类定义在frameworks/base/
您可能关注的文档
- A1-直流电机控制实验报告讲解.docx
- A03成本管理控制与现场改善讲解.ppt
- AdobePremiereCS3教程大全讲解.ppt
- ADSSIMULATEEXAMPLE讲解.ppt
- AEC-Q200培训教材讲解.ppt
- 材料加工测试技术-04-基本参量的测量分析.ppt
- Agilent_GC7890A气相色谱仪标准操作培训讲解.ppt
- 材料科学与工程导论-14-2分析.ppt
- agv技术应用讲解.ppt
- AIAGCQI-10EffectiveProblemSolvingGuidelineTraining讲解.ppt
- 2024年度党员干部民主生活会班子对照检查材料.docx
- 公司党委领导班子2024年度民主生活会对照检查材料4个带头方面.docx
- 市府办(政府办)领导班子2024年民主生活会会后综合情况报告.docx
- 在2025年市司法局信息宣传工作推进会上的讲话.docx
- 在2025年全省文化旅游高质量发展推进会上的讲话.docx
- 在2025年全区工业、住建大规模设备更新推进会上的讲话.docx
- 党支部2024年组织生活会民主评议党员情况总结报告_1.docx
- 2024年度组织生活会个人对照检查剖析材料.docx
- 镇党委书记2024年度民主生活会对照检查材料1.docx
- 党支部2024年组织生活会民主评议党员情况总结报告.docx
最近下载
- 日本日立变频器sj300系列调试参考手册.pdf
- 苏教版三年级下册含有小括号的混合运算教学设计.docx
- 施工安全管理员工培训.pptx VIP
- 禽流感课件(共23张PPT)《动物疫病防治》.pdf VIP
- 在2024年度组织生活会和民主评议党员会上的点评讲话+民主评议党员会议议程.doc VIP
- 天然苏打水标准.pdf VIP
- 理光MPC3004 3504 4504 6004SP维修手册.pdf VIP
- 部编版四年级下册语文5琥珀ppt课件设计 (3).ppt
- 第六节:隋唐统一多民族国家的发展.ppt VIP
- 兴文县2025年第一次公开考调公务员 (参照管理人员)(30人)笔试模拟试题及答案解析.docx
文档评论(0)