对于Context的理解
刚接触android的时候,对于Context类(上下文)特别不理解,从书上看到的对Context的描述大致如下:Context描述了应用程序环境的信息,通过它能获取应用程序的资源和类,包括一些应用级的操作,如启动一个activity,或是一个service,发送广播等等。为什么Context的作用如此强大,先看一下跟context有关的类结构关系:
Direct Subclasses(直接子类)
ContextWrapper, MockContext
Indirect Subclasses(间接子类)
AbstractInputMethodService, AccessibilityService, AccountAuthenticatorActivity, ActionBarActivity, Activity, ActivityGroup, AliasActivity, Application, BackupAgent,BackupAgentHelper, ContextThemeWrapper, and 23 others.(包括 service)从上面可以看到,我们熟悉的Activity,service类都属于context的子类。Context类作为一个抽象类,它定义了哪些方法呢?简单的说,它提供了一组通用的API,我举几个常见的例子如:public abstract Object getSystemService(String name);//获取系统级别服务public abstract Object startActivity(Intetn intent);//启动一个activitypublic abstract ComponentName startService(Intent intent);//启动一个service等等,其实这些方法都是定义在Context类中。那么这些方法的实现是在哪里?是在ContextImpl这个类中,它也是Context的直接子类。现在大家对于前面提到的:Context描述了应用程序环境的信息,通过它能获取应用程序的资源和类,包括一些应用级的操作,理解一些了呢?所以其实Context就是一个环境变量(描述了应用程序环境的信息)和句柄(提供各种API)的结合体。
另外补充一点,就是在android 2.0之前的版本是没有ContextImpl这个类的,之后才采用了这样的一个设计,顺便附上一张自网上看到的图。
一起学习,有错误麻烦指出。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。