1.Context本身是一个纯的abstract类,ContextWrapper是对Context的一个包装而已,它的内部包含了一个 Context对象,其实对ContextWrapper的方法调用最终都是调用其中的Context对象完成的,至于 ContextThremeWrapper,很明显和Theme有关,所以Activity从ContextThemmWrapper继承,而 Service从ContextWrapper继承,ContextImpl是唯一一个真正实现了Context中方法的类。
2. Activity和Service本没有真正的实现,他们只是内部包含了 一个真实的Context对象而已,也就是在在创建Activity或者Service的时候肯定要创建爱你一个ContextImpl对象,并赋值到 Activity中的Context类型变量中。那我们就来看看Andorid源码中有哪些地方创建了ContextImpl.
据统计Android中创建ContextImpl的地方一共有7处:
在PackageInfo.makeApplication()中
在performLaunchActivity()中
在handleCreateBackupAgent()中
在handleCreateService()中
2次在hanldBinderAppplication()中
在attach()方法中