官方文档的解释是:Context提供了关于应用环境全局信息的接口。它是一个抽象类,它的执行被Android系统所提供。它允许获取以应用为特征的资源和类型。同时启动应用级的操作,如启动Activity,broadcasting和接收intents。
常用的Context的子类是Activity和Service,我们可以将context理解为类似于Window下的句柄,但Window下的句柄,每个资源都可以是一个句柄,比如一个控件、图片等等,但在android中context只能是Activity和Service等这一类。如果要在Activity中新建一个dialog,在这个dialog中要添加一个控件,要给这个控件传递一个context参数,只能是Activity的实例,不能是这dialog,因为控件的事件需要activity来处理。所以context是一个统领一些资源(应用程序环境变量等)的上下文(理解为句柄)。
我们在一个activity中有如下代码:
Toast.makeText(null, "", Toast.LENGTH_LONG).show();
那么程序运行时会有空指针异常,就是因为第一个参数Context类型,我们传了null,这样运行到这段代码时,系统不知道activity的环境变量,所以就会出错。
--------------------------------------------------------------------
PS: 欢迎关注公众号"Devin说",会不定期更新Java相关技术知识。
--------------------------------------------------------------------