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


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

上图中已经把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时以上对象的调用时序:


更多相关文章

  1. android图表ichartjs
  2. 2011年Android(安卓)Camera学习笔记之一
  3. Android(安卓)N 指纹框架
  4. Android中OpenMax的适配层
  5. Android获取屏幕大小
  6. Android(安卓)初识Retrofit
  7. OpenCV4Android开发
  8. android之launcher时序图and图标的建立
  9. Android实现圆角弹框功能

随机推荐

  1. android ListView中Checkbox实现单选,全选
  2. Android学习之保持屏幕常亮的几种方法
  3. 让Activity变成一个窗口Activity
  4. Android自学笔记(番外篇):全面搭建Linux环境
  5. android的文件、目录操作
  6. Android 防止点击事件连按,isFastClick()
  7. Android studio2.3.3升级到3.1.2坑(小记)
  8. Android Progrees处理
  9. Android 8.1 系统锁屏显示流程整理
  10. Using C++ Code in Android Application