🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
根据第6章对Context的介绍,Context的getContentResolver最终会调用它所代理的ContextImpl对象的getContentResolver函数,此处直接看ContextImpl的代码。 **ContextImpl.java::getContentResolver** ~~~ public ContentResolver getContentResolver() { returnmContentResolver; } ~~~ 该函数直接返回mContentResolver,此变量在ContextImpl初始化时创建,相关代码如下: **ContextImpl.java::init** ~~~ final void init(LoadedApk packageInfo, IBinder activityToken, ActivityThreadmainThread, Resources container,String basePackageName) { ...... mMainThread = mainThread;//mainThread指向AcitivityThread对象 //mContentResolver的真实类型是ApplicationContentResolver mContentResolver = new ApplicationContentResolver(this, mainThread); ...... } ~~~ 由以上代码可知,mContentResolver的真实类型是ApplicationContentResolver,它是ContextImpl定义的内部类并继承了ContentResolver。 getContentResolver函数比较简单,就分析到此。下面来看第二个关键点。 >[info] **提示**:为了书写方便,将ContentProvider简称为CP,将ContentResolver简称为CR。