- 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
- Haier海尔413升风冷变频多门冰箱 BCD-413WGHFD1BSJU1(白)说明书用户手册.pdf
- Siemens西门子工业抽屉式断路器主回路后垂直连接 抽屉式断路器主回路后垂直连接使用手册.pdf
- Samsung三星智能佩戴设备 Galaxy Fit3安全手册.pdf
- Samsung三星滚筒洗衣机 AI神 黑钻热泵洗烘旗舰 WD18DB8995BZSC使用手册.pdf
- Sakura樱花消毒柜 保洁柜消毒柜 SCQ-130D6用户手册说明书.pdf
- Hifiman头领科技ARYA UNVEILED说明书用户手册.pdf
- Siemens西门子工业抽屉式主回路连接前置端子 支撑件 抽屉式主回路连接前置端子 支撑件使用手册.pdf
- Siemens西门子工业中性线的外部电流传感器 中性线的外部电流传感器使用手册.pdf
- Siemens西门子工业电子脱扣单元 电子脱扣单元使用手册.pdf
- Razer雷蛇Playstation 专用雷蛇战锤狂鲨极速版 RZ12-038203 用户指南 (简体中文)说明书用户手册.pdf
最近下载
- 腰椎的解剖及腰部的层次解剖ppt参考课件.ppt
- 知识产权助推新质生产力发展.pptx VIP
- NB∕T 10805-2021 水电工程溃坝洪水与非恒定流计算规范.pdf
- 2022年鄄城县工会系统招聘考试题库及答案解析.docx VIP
- 2024年医师定期考核必考题库及答案.pdf
- 2023年互联网信息审核员理论考试题库(含答案).pdf VIP
- 2024中考语文《西游记》历年真题专练(学生版+解析版).pdf VIP
- 高中音乐鉴赏测试题.doc VIP
- 人教三上数学《数学广角—集合》单元作业设计方案(13页).pdf VIP
- 省级政府和重点城市一体化政务服务能力调查评估报告2021年.pdf VIP
文档评论(0)