本文出自门心叼龙的博客,属于原创类容,未经博主允许,不得转载。
今天写的这篇已经源码解析的第六篇了,虽然这类文章不如实战类文章受众那么广,但是作为每个Android开发工程师来讲,加强内功修炼这是作为向高级工程师迈进的必经之路。要知道了解了底层的工作原理对于以后实战开发中出现的各种各样的问题都会轻易解决。这和习武是一个道理,如果一个人它的内功很强,那它学什么都很快很容易掌握,否则它永远只是个花架子。
好了,言归正传,我们在日常开发过程中经常需要访问照片应用中图片资源,或者读取通讯录应用当中的联系人信息等等的一些应用场景,这时候就需要用到ContentProvider,ConentProvider在Android四大组件中排行老四,它是一个国家图书馆,为不同的应用程序之间的数据共享提供了统一的访问接口,它需要和ContentResolver配合使用,ContentProvider负责提供数据,ContentResolver负责获取数据。在应用程序启动的时候,ContentProvider就会被初始化注册到ActivityManagerServcie,然后其他的应用通过uri向服务端获取ConentProvider所对应的Transport对象。Transport本质上是一个binder,有了binder这个中间人对象,我们就可以调用远程的ConentProvider所提供的方法了。和之前一样,我先先来回顾一下ContentProvider的简单使用,然后在对它的源码进行解析。