Android中Context详解 ---- 你所不知道的Context

2014-11-24 11:50:18 · 作者: · 浏览: 2

大家好, 今天给大家介绍下我们在应用开发中最熟悉而陌生的朋友-----Context类 ,说它熟悉,是应为我们在开发中


时刻的在与它打交道,例如:Service、BroadcastReceiver、Activity等都会利用到Context的相关方法 ; 说它陌生,完全是


因为我们真正的不懂Context的原理、类结构关系。一个简单的问题是,一个应用程序App中存在多少个Context实例对象呢?


一个、两个? 在此先卖个关子吧。读了本文,相信您会豁然开朗的 。


Context,中文直译为“上下文”,SDK中对其说明如下:


Interface to global information about an application environment. This is an abstract class whose implementation


for application-level operations such as launching activities, broadcasting and receiving intents, etc


从上可知一下三点,即:


1、它描述的是一个应用程序环境的信息,即上下文。


2、该类是一个抽象(abstract class)类,Android提供了该抽象类的具体实现类(后面我们会讲到是ContextIml类)。


3、通过它我们可以获取应用程序的资源和类,也包括一些应用级别操作,例如:启动一个Activity,发送广播,接受Intent


信息 等。。


于是,我们可以利用该Context对象去构建应用级别操作(application-level operations) 。


一、Context相关类的继承关系



相关类介绍:


Context类 路径: /frameworks/base/core/java/android/content/Context.java


说明: 抽象类,提供了一组通用的API。


源代码(部分)如下:


ContextIml.java类 路径 :/frameworks/base/core/java/android/app/ContextImpl.java


说明:该Context类的实现类为ContextIml,该类实现了Context类的功能。请注意,该函数的大部分功能都是直接调用


其属性mPackageInfo去完成,这点我们后面会讲到。


源代码(部分)如下: