简介:翻译为上下文,也可以理解为环境,是提供一些程序的运行环境基础信息。
类型(三种):
1.Application
2.Activity
3.Service
这三个类虽然分别各种承担着不同的作用,但它们都属于Context的一种,而它们具体Context的功能则是由ContextImpl类去实现的,因此在绝大多数场景下,Activity、Service和Application这三种类型的Context都是可以通用的。
Context数量:
Activity数量 + Service数量 + 1 (1为Application)
子类(两个)
- ContextWrapper是上下文功能的封装类
ContextThemeWrapper
ContextThemeWrapper是一个带主题的封装类,而它有一个直接子类就是Activity,所以Activity和Service以及Application的Context是不一样的,只有Activity需要主题,Service不需要主题。
Service
Application - ContextImpl则是上下文功能的实现类
注意
1.不过有几种场景比较特殊,比如启动Activity,还有弹出Dialog。出于安全原因的考虑,Android是不允许Activity或Dialog凭空出现的,一个Activity的启动必须要建立在另一个Activity的基础之上,也就是以此形成的返回栈。而Dialog则必须在一个Activity上面弹出(除非是System Alert类型的Dialog),因此在这种场景下,我们只能使用Activity类型的Context,否则将会出错。
2. getApplicationContext()和getApplication()方法得到的对象都是同一个application对象,只是对象的类型不一样。