漫画:关于 Context 不得不说的细节
以下文章来源于码个蛋 ,作者码妞
作者 | 码妞
本文经授权转载自码个蛋(ID:codeegg)
Context到底是啥?
Context 本身是一个抽象类,它的实现类为 ContextImpl。
另外有子类 ContextWrapper 和 ContextThemeWrapper,这两个子类都是 Context 的代理类,主要区别是 ContextThemeWrapper 有自己的主题资源。
看图:
一个 Context 意味着一个场景,一个场景就是我们和软件进行交互的一个过程。
从安卓程序的角度来看,其实一个 Activity 就是一个 Context ,一个 Service 也是一个 Context。
Context有啥作用?
有啥用?要看它能做啥,看看主要提供了哪些接口了。
还挺多的,看起来管得挺多,四大组件都管着,像个 Application 大管家。
一个App里有多少个Context?
前面说啦,一个Activity就是一个场景(Context),一个Service也是一个场景,所以,应用程序中有多少个Activity或者Service就会有多少个Context对象,也就是有多少个场景。
ContextImpl和ContextWrapper有啥区别?
看下ContextWrapper:
再看下ContextImpl:
比较下:
不同组件创建ContextImpl的方式:
总结
这几个类的关系: