ContentProvider是Android中提供的用于进程间通信的方式,它是一个抽象类,内部有六个抽象方法,它的底层也是Binder机制。
开发步骤
- 服务端自定义一个ContentProvider,实现ContentProvider接口的call方法
- 客户端提供一个单例来使用这个ContentProvider
操作系统的ContentProvider
底层实现
ContentProvider会开辟一块匿名共享内存然后把要共享的数据放到匿名共享内存中,然后通过Binder把共享数据的文件描述符发送给用户,用户拿着文件描述符去匿名共享内存中去读取数据,这样就完成了数据的进程间共享
ContentResolver
- 内容解析者,用于获取内容提供者提供的数据
- ContentResolver.notifyChange(uri)发出消息
ContentObserver
- 内容监听器,可以监听数据的改变状态
- 目的是观察(捕捉)特定Uri引起的数据库的变化,继而做一些相应的处理
三者关系
使用ContentResolver来获取ContentProvider提供的数据,同时注册ContentObserver监听Uri数据的变化