欢迎访问我的个人网站:https://coderyuan.com
Context是Android App中用的非常多的一种概念,常被翻译成上下文,这种概念在其他的技术中也有所使用,无意间点了Context的源码,那么就来分析分析Context在Android中到底是什么东西?
先贴段代码
/**
* Interface to global information about an application environment. This is
* an abstract class whose implementation is provided by
* the Android system. It
* allows access to application-specific resources and classes, as well as
* up-calls for application-level operations such as launching activities,
* broadcasting and receiving intents, etc.
*/
public abstract class Context {
通过注释可以看出,Android官方对它的解释,大概可以理解为应用程序环境中全局信息的接口,它整合了许多系统级的服务,可以用来获取应用中的类、资源,以及可以进行应用程序级的调起操作,比如启动Activity、Service等等,而且Context这个类是abstract的,不包含具体的函数实现。
那就意思是能干很多事,反正很牛逼的样子。。。
于是搜了一下Context的引用,多的不能再多了
结构分析
Context类中包含了两类内容:常量、抽象方法定义
由于Context本身是abstract的,所以它只负责定义需要的操作,具体的实现它并不关心,而直接继承于Context的ContextWrapper虽然并不是使用abstract修饰,但并没有做实际的实现,只是做了简单的包装,以便更好的呈现给Application、Service这样的类。我们所能看到的对Context做第一层实现的,应该是位于android.app包下的ContextImpl
于是先分析ContextImpl中的成员变量(包括静态的、final的、public的、private的),以下源码中是ContextImpl的所有成员变量: