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时以上对象的调用时序: