目前在研读田维术的系列文章《Android插件化原理解析》,http://weishu.me/2016/01/28/understand-plugin-framework-overview/
本文写一下Android插件化原理解析——ContentProvider的插件化的读后感和理解.
1.ContentProvider的工作流程图:
2.ContentProvider的插件化实现方法:
3.疑问
3.1 install一个ContentProvider的含义是啥?
答:在ActivityThread类中,不管是调用方还是ContentProvider所在的APP,都会调用方法installProvider来进行install。区别是:对于ContentProvider所在的APP,它会将本APP中所有的ContentProvider类通过ClassLoader的方式加载到内存中,然后调用其attachInfo方法进行初始化操作。相同的地方是:都会将该ContentProvider实例保存在mProviderMap中,以便后续的再次使用。图1中的“install"仅仅指保存在mProviderMap的操作。
3.2 接着3.1问,在插件化框架中,StubContentProvider的代理分发具体是怎么实现的?
答:宿主APP在系统installStubContentProvider之前,在Application类的attachBaeContext()方法里抢先install了各个插件的ContentProvider。怎么个安装法?
是模拟系统进行正常的install?在ActivityThread类的mProviderMap中,以插件的Authority为key来保存,然后返给AMS的也是插件的ContentProvider吗?然后在StubContentProvider的各个方法里再根据代理分发,根据插件的Authority去get到插件的ContentProvider,并调用其对应的方法?