##1.概念:
####google的官方文档解释是:Context提供了关于应用环境全局信息的接口。它是一个抽象类,它的执行被Android系统所提供。它允许获取以应用为特征的资源和类型。同时启动应用级的操作,如启动Activity,broadcasting和接收intents。
1.应用环境:加载资源、启动一个新的Activity、获取系统服务、获取内部文件(夹)路径、创建View,发送广播,接受Intent,信息等。
2.概念描述:字面意思是上下文,场景。是一个应用程序的环境的信息(数据)。在实际应用中它也确实是起到了管理上下文环境中各个参数和变量的总用,方便我们可以简单的访问到各种资源。
3.作为类的描述:是一个抽象类,Android提供了该抽象类的具体实现类(ContextIml),Activity、Service、Application等。
4.类比描述:context理解为类似于Windows下的句柄(一种特殊的指针),Windows下的句柄,每个资源都可以是一个句柄,比如一个控件、图片等等,但在Android中context只能是Activity和Service等这一类。如果要在Activity中新建一个dialog,在这个dialog中要添加一个控件,要给这个控件传递一个context参数,只能是Activity的实例,不能是这dialog,因为控件的事件需要activity来处理。所以context是一个统领一些资源(应用程序环境变量等)的上下文(理解为句柄)。
##2.注意事项:
1.程序中,Context维护的是当前的Activity的生命周期,Application维护的是整个项目的生命周期。
2.使用context的时候,小心内存泄露,防止内存泄露,注意一下几个方面:
①不要让生命周期长的对象引用activity context,即保证引用activity的对象要与activity本身生命周期是一样的。
②对于生命周期长的对象,可以使用application,context。
③避免非静态的内部类,尽量使用静态类,避免生命周期问题,注意内部类对外部对象引用导致的生命周期变化。