ContentProvider统一了对数据源操作的接口,并支持进程间通信(IPC),应用进程之间可以通过ContentProvider对外暴露接口,来分享数据。 作为android中核心组件,不得不深入了解,翻看了android的源码写篇blog与大家分享。


1.我画了一个静态类结构图,看下图:

wKiom1R5tS7xCX8WAALgWtpwAI4659.jpg

上图中已经把ContentProvider的核心结构列举了出来。

1.IContentProvider定义了所有可以操作数据源的接口,如:query,insert等。

2.ContentProviderNative是一个抽象类继承自Binder,它并没有真正实现IContentProvider接口,ContentProviderNative核心方法asInterface,这是一个static的方法负责得到ContentProviderProxy代理对象。

3.ContentProviderProxy实现了IContentProvider所有接口,并支持进程间通信(IPC),主要负责将形参打包到Parcel中通过IBinder.transact发送包并从reply parcel中得到cursor

4.Transport继承自ContentProviderNative,并通过getIContentProvider方法返回。


我画了一个时序图,来说明在Activity中使用getConentResolver().query时以上对象的调用时序:


wKioL1R5tefj_t8uAAV6ZK-MJdo570.jpg

更多相关文章

  1. Android 匿名共享内存C接口分析
  2. Android PinyinIME 源码笔记 -- 1. 底层服务接口简介
  3. Android App怎样调用 Frameworks Bluetooth接口
  4. Android LCD(二):LCD常用接口原理篇
  5. Android中解析xml文件的接口
  6. android 外挂字幕接口
  7. Android中callback(接口回调)机制
  8. Android调用相机接口
  9. android aidl接口初步了解

随机推荐

  1. Android(安卓)ApiDemos示例解析(116):Vie
  2. fedora 18 源码编译 android 4.0.1
  3. Android App安装失败错误总结
  4. [Android(安卓)Pro] 关于BitmapFactory.d
  5. android中的dispatchTouchEvent、onInter
  6. [置顶] Android——4.2.2 文件系统目录分
  7. Android各版本源码下载链接
  8. Android Studio(十二):打包多个发布渠道的
  9. Android 简单联系人操作
  10. android中Bitmap对象怎么保存为文件?