Android Context创建过程
2015-11-08 23:06
423 查看
特定的资源或者类构成了Android应用程序的运行上下文环境
PackageManager, ClassLoader, Assert等等
Android应用程序窗口的运行上下文环境是通过ContextImpl类来描述的,即每一个Activity组件都关联有一个ContextImpl对象。ContextImpl类继承了Context类,它与Activity组件的关系如图
这个类图在设计模式里面就可以称为装饰模式
Activity组件以后就可以通过这个ContextImpl对象来执行一些具体的操作,例如,启动Service组件、注册广播接收者和启动Content Provider组件等操作。同时,ContextImpl类又通过自己的成员变量mOuterContext来引用了与它关联的一个Activity组件,这样,ContextImpl类也可以将一些操作转发给Activity组件来处理。
在前面Android应用程序启动过程源代码分析一文中,我们已经详细分析过一个Activity组件的启动过程了。在这个启动过程中,最后一步便是通过ActivityThread类的成员函数performLaunchActivity在应用程序进程中创建一个Activity实例,并且为它设置运行上下文环境,即为它创建一个ContextImpl对象。接下来,我们就从ActivityThread类的成员函数performLaunchActivity开始,分析一个Activity实例的创建过程,以便可以从中了解它的运行上下文环境的创建过程,如图所示:
PackageManager, ClassLoader, Assert等等
Android应用程序窗口的运行上下文环境是通过ContextImpl类来描述的,即每一个Activity组件都关联有一个ContextImpl对象。ContextImpl类继承了Context类,它与Activity组件的关系如图
这个类图在设计模式里面就可以称为装饰模式
Activity组件以后就可以通过这个ContextImpl对象来执行一些具体的操作,例如,启动Service组件、注册广播接收者和启动Content Provider组件等操作。同时,ContextImpl类又通过自己的成员变量mOuterContext来引用了与它关联的一个Activity组件,这样,ContextImpl类也可以将一些操作转发给Activity组件来处理。
在前面Android应用程序启动过程源代码分析一文中,我们已经详细分析过一个Activity组件的启动过程了。在这个启动过程中,最后一步便是通过ActivityThread类的成员函数performLaunchActivity在应用程序进程中创建一个Activity实例,并且为它设置运行上下文环境,即为它创建一个ContextImpl对象。接下来,我们就从ActivityThread类的成员函数performLaunchActivity开始,分析一个Activity实例的创建过程,以便可以从中了解它的运行上下文环境的创建过程,如图所示:
相关文章推荐
- Android 实现计时器功能
- 判断手机是否ROOT 代码实现+ Android 操作系统 获取Root权限 原理解析
- BaiduMobAds_MSSP_bd_SDK_android_v3.0
- Android实践项目汇报(一)
- Android总结
- Android开发:组播(多播)与广播
- Android Shimmer微光闪烁shimmer-android
- Android 重写系统Crash处理类,保存Crash信息到SD卡 和 完美退出程序的方法
- Android工程出现错误Unable to resolve target 'android-19'
- Android之附加图片2—— 从系统图库中选择图片
- Android 自定义万能的抽屉布局(侧滑菜单)GenericDrawerLayout
- Android中IPC的基础和几种常用方式
- Android项目开发
- Android 进程生命周期 Process Lifecycle
- Android Studio中AVD SDk找不到的解决办法
- Android打包的那些事
- Android RecyclerView(1)——范例篇
- Android Studio快捷键
- Android:Serializable接口和Parcelable接口
- Android6.0权限管理