1、Context概念
Context,中文直译为“上下文”,小学读语文的时候我们知道,有时候理解一个句子,需要看看上下文,这里上下文有时需要看看上下临接着的几段话就可以理解他的意思,有时候呢,我们需要把整篇文章都读取一遍才能知道他的意思,
**一个是全局的(整个软件的信息),
一个是局部的(一个软件的某个部分的信息)**
Context是什么官方解释是 ,SDK中对其说明如下:
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
先看一下context这个抽象类的内容:
从上可知一下三点,即:
1、它描述的是一个应用程序环境的信息,即上下文。
2、该类是一个抽象(abstract class)类,Android提供了该抽象类的具体实现类(后面我们会讲到是ContextIml类)。
3、通过它我们可以获取应用程序的资源和类,也包括一些应用级别操作,例如:启动一个Activity,发送广播,接受Intent
信息 等。。
为什么需要context?
试想一下这个语句:
Button myButton =newButton(this);
这个this就是context,前面说了它指向了parent对象,那指向了哪里?为什么需要这么做?原因是Button为了能完成自己的使命(响应各种操作)就得让Android系统知道自己是属于哪个Activity的,这个信息是必须的,因为只有这样Android系统才会对其进行管理,比如响应onClick()事件,否则系统连Button是属于哪个Activity的都不知道,怎么响应呢?如果Button的context和Activity的context是一样的,那么它们都是可见的,比如上面那个button跟Activity一样是可见的,它们的context指向另一个不可见的对象,也就是它们受那个不可见的对象控制,我理解为系统。
.Application context和Activity context。
这是两种不同的context,也是最常见的两种。第一种中context的生命周期与Application的生命周期相关的(全局的),context随着Application的销毁而销毁,第二种中的context跟Activity的生命周期是相关的(局部的),但是对一个Application来说,Activity可以销毁几次,那么属于Activity的context就会销毁多次。至于用哪种context,得看应用场景,个人感觉用Activity的context好一点,不过也有的时候必须使用Application的context。