Android Context原理总结


context相关类的类关系

Android Context原理总结

Activity类中Context的创建

Android Context原理总结

Service类中Context的创建

Android Context原理总结

Application中的context的创建

Android Context原理总结

创建流程总结

  • 相同流程
    • 在Instrumentation类中通过反射创建Application/Activity/Service
    • 创建ContextImpl
    • Application/Activity/Service.attach将ContextWrapper中的Context和ContextImpl关联
    • ContextImpl.setOuterContext
  • 不同点

    • 在不同情况下创建ContextImpl传递的参数不同

      • Activity创建:ContextImpl.createActivityContext
      • Service/Application创建:ContextImpl.createAppContext
    • ContextImpl.setOuterContext关联的类不同

Activity.getApplicationContext

Android Context原理总结

涉及到的设计模式

  1. 在Service和Application类中,ContextWrapper相当于ContextImpl的代理类,因为ContextWrapper并没有增强ContextImpl的功能
  2. 在Activity类中,ContextThemeWrapper相当于ContextImpl的包装类,在ContextImpl的基础上扩展了与theme相关的功能,可以通过ContextThemeWrapper修改theme

参考博客

Android深入理解Context(一)Context关联类和Application Context创建过程
Android深入理解Context(二)Activity和Service的Context创建过程

相关文章: