理解Context

作者: LeoFranz | 来源:发表于2019-10-14 00:36 被阅读0次

我们平时对Context的理解无外乎两方面:

  • 调用Context的方法,比如启动activity,访问资源;
  • 作为参数传入context,比如弹出Toast,创建dialog
image.png

ContextImpl实现了context的大部分功能,对应ContextWrapper中的成员变量mBase,这里体现了装饰模式,即ContextWrapper是ContextImpl的包装类,ContextImpl的实现就能根据不同组件的创建方式有所拓展,此外ContextWrapper本身也是可拓展的,如ContextThemeWrapper就包含主题相关方法,适用于作为activity的父类。

这种装饰模式的使用好处在于

  • 对调用者提供统一的context接口,调用者不用关心contextImpl的具体实现
  • ContextImpl的变化能对包装者隐藏。

Context的创建过程
整体而言,Context的子类最终都要绑定一个ContextImpl才能实现真正的context功能。
1、Application Context的创建
在ApplicationTread通知ActivityThread创建application的时候,在ActivityThread的performLaunchActivity中LoadedApk.makeApplication中创建对应的ContextImpl,然后通过Application.attach方法将Application和ContextImpl绑定,ContextImpl会传递成为ContextWrapper中的mBase类。

一个细节在于,application创建后会成被赋值到LoadedApk中的mApplication对象,最终我们getApplication和getApplicationContext其实获取的是同一个对象。

2、Activity Context的创建
创建activity流程中,在ActivityThread的performLaunchActivity中,创建ContextImpl之后创建activity实例,然后通过Activity.attach方法将activity和ContextImpl绑定。
3、Service Context的创建
和Activity的绑定Context过程类似,不过最后是在ActivityThread.handleCreateService方法中完成context的生成和attach工作。

相关文章

  • 源码学习->05Context

    参考文章 : 1. 理解Android Context理解Application创建过程 Context : 1、...

  • Context理解

    官方文档 https://doc.react-china.org/docs/context.html#api 个人...

  • 理解Context

    此文为Android内核剖析学习 Context是啥 一个Context意味着一个场景,一个场景就是用户和操作系统...

  • 理解Context

    什么是Context Context: 字面理解为上下文,语境。Android应用模型是基于组件的应用设计模式,组...

  • 理解Context

    我们平时对Context的理解无外乎两方面: 调用Context的方法,比如启动activity,访问资源; 作为...

  • Context 理解

    继承关系 Context是个抽象类,在加载资源、启动一个Activity、获取系统服务、获取内部文件的路径,及创建...

  • 对 Context 的理解

    对 Context 的理解 1. Context的作用: Context 是应用组件的上下文,有了 Context...

  • HI,Context!

    Context的理解 context的使用场景: getResources() StartActivity() 弹...

  • 进阶之光笔记二

    第五章 理解上下文Context Context的关联类 Context使用场景:1.使用Context调用方法,...

  • context的理解

    转载自:http://blog.csdn.net/singwhatiwanna/article/details/2...

网友评论

    本文标题:理解Context

    本文链接:https://www.haomeiwen.com/subject/xxnkmctx.html