Content Provider应用程序组件是:结合文件权限机制,有保护地开放自己的数据给其它应用程序使用。
基于Content Provider设计App的框架图如下:
Content Provider 展示了Binder进程间通信机制(文件权限)和匿名共享内存机制(大量的数据)完美结合。
- Content Provider实例启动过程
懒加载的机制:第一次要使用这个Content Provider的时候,系统才会把它加载到内存中来
ArticlesProvider的完整启动过程序列图:
-
数据共享原理
CursorWindow对象:
它在内部创建了一块匿名共享内存,
它实现了Parcel接口,因此它可以在进程间传输
数据共享原理序列图:
- 数据更新通知机制
Content Provider中的数据监控机制与Android系统中的广播机制三个主要的区别:
一是前者是通过URI来把通知的发送者和接收者关联在一起的,而后者是通过Intent来关联的,
二是前者的通知注册中心是由ContentService服务来扮演的,而后者是由ActivityManagerService服务来扮演的,
三是前者负责接收数据更新通知的类必须要继承ContentObserver类,而后者要继承BroadcastReceiver类。
差异的原因:Content Proivder组件的数据共享功能本身就是建立在URI的基础之上的
Content Provider的数据更新机制划分为三个单元分析:
第一个单元是ContentService的启动过程,
第二个单元是监控数据变化的ContentObserver的注册过程,
第三个单元是数据更新通知的发送过程。
注册ArticleObserver来监控ActiclesProvider中的数据变化的过程序列图:
数据变化通知的发送过程序列图: