Android中Context理解及创建过程

2020-04-04  本文已影响0人  MadnessXiong

简介:

Android中四大组件都会涉及到Context。Context意为上下文,是一个应用程序环境信息的接口。Context是一个抽象类,它的内部定义了很多方法及静态常量。

它的使用场景分为2类:

  • 使用Context调用方法,如启动Activity,访问资源,调用系统服务等。
  • 调用方法时传入Context,比如弹出Toast,创建Dialog等

Context的关联类:

Context关联类的关系如下图:


image-20200403192950842.png

从上图可知,一个应用程序进程的Context数量等于Activity和Service的总个数加一个Application。

ContexImpl和ContextWapper都继承自Context。其中ContextWapper内部包含了一个ContextImpl类型的mBase。ContextImpl提供了很多功能,但是外界需要使用并拓展ContextImpl的功能,因此设计上使用了装饰模式,ContextW apper是装饰类,它对ContextImpl进行包装。ContextWapper主要起了方法传递的作用,ContextWapper中几乎所有的方法都是调用ContextImpl的相应方法来实现的。

ContextThemeWapper,Service和Application都继承自ContextWapper。这样它们都可以使用mBase使用Context的方法。同时它们也是装饰类,在ContextWapper的基础上又增加了不同的功能。ContextThemeWapper中包含和主题相关的方法(如getTheme()),因此需要主题的Activity继承自ContextThemeWapper,而不需要主题的Service和Application都继承自ContextWapper。

Context的关联类采用装饰模式主要有以下优点:

Context的创建过程

上一篇 下一篇

猜你喜欢

热点阅读