对于Context的理解
2014-04-15 20:08
435 查看
刚接触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这个类的,之后才采用了这样的一个设计,顺便附上一张自网上看到的图。
一起学习,有错误麻烦指出。
附件:http://down.51cto.com/data/2364303
Context
extends ObjectDirect 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这个类的,之后才采用了这样的一个设计,顺便附上一张自网上看到的图。
一起学习,有错误麻烦指出。
附件:http://down.51cto.com/data/2364303
相关文章推荐
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- 解決Linux下Android开发真机调试设备不被识别问题
- [Android]在代码里运行另一个程序的方法
- [软件咨询]WPS2012正式版已发布 金山Office移动版4.0发布
- Android笔记-Linux Kernel Ftrace (Function Trace)解析
- javascript prototype,executing,context,closure
- android USB如何修改VID具体实现
- Android增量升级的方法和原理详细介绍
- Android Mouse实现过程详细笔记
- 深入Android Browser配置管理的详解
- Android Mms之:深入理解对话列表管理
- Android APP与媒体存储服务的交互
- android 多线程技术应用
- Android之采用execSQL与rawQuery方法完成数据的添删改查操作详解
- Android数据类型之间相互转换系统介绍
- 通过Android trace文件分析死锁ANR实例过程
- Android实现左右滑动效果的方法详解