刚接触android的时候,对于Context类(上下文)特别不理解,从书上看到的对Context的描述大致如下:Context描述了应用程序环境的信息,通过它能获取应用程序的资源和类,包括一些应用级的操作,如启动一个activity,或是一个service,发送广播等等。为什么Context的作用如此强大,先看一下跟context有关的类结构关系:
创新互联建站长期为近1000家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为无为企业提供专业的网站制作、网站建设,无为网站改版等技术服务。拥有十余年丰富建站经验和众多成功案例,为您定制开发。
Context
extends Object
Direct Subclasses(直接子类)
ContextWrapper,MockContext
Indirect Subclasses(间接子类)
AbstractInputMethodService,AccessibilityService,AccountAuthenticatorActivity,ActionBarActivity,Activity,ActivityGroup,AliasActivity,Application,BackupAgent,BackupAgentHelper,ContextThemeWrapper, and23 others.(包括 service)
从上面可以看到,我们熟悉的Activity,service类都属于context的子类。
Context类作为一个抽象类,它定义了哪些方法呢?简单的说,它提供了一组通用的API,我举几个常见的例子
如:
public abstract Object getSystemService(String name);//获取系统级别服务
public abstract Object startActivity(Intetn intent);//启动一个activity
public abstract ComponentName startService(Intent intent);//启动一个service
等等,其实这些方法都是定义在Context类中。
那么这些方法的实现是在哪里?是在ContextImpl这个类中,它也是Context的直接子类。
现在大家对于前面提到的:Context描述了应用程序环境的信息,通过它能获取应用程序的资源和类,包括一些应用级的操作,理解一些了呢?
所以其实Context就是一个环境变量(描述了应用程序环境的信息)和句柄(提供各种API)的结合体。
另外补充一点,就是在android 2.0之前的版本是没有ContextImpl这个类的,之后才采用了这样的一个设计,顺便附上一张自网上看到的图。
一起学习,有错误麻烦指出。
附件:http://down.51cto.com/data/2364303
名称栏目:对于Context的理解
转载来源:
http://cqcxhl.cn/article/ihgpod.html