Android基础 Context详解
##概述:
一个Context就是一个场景,一个用户和应用程序交互的场景.
Activity类基于(继承)Context,Service也是基于Context.虽然Activity和Service都还实现其他的接口,但是从设计角度来看.
接口的实现只是对类功能的扩展.而继承才是类的本质,所以Activity/Service的本质是一个Context,其所实现的接口只是为了扩充
Context的功能.扩充之后称为Activity或Service
Context的创建
◦Applicatiopn对应的Context
首先AMS通过远程调用ActivityThread的bindApplication方法,然后根据远程通讯传递的数据(一是ApplicationInfo,一是其他数据)构造出
AppBindData,使用ApplicationInfo创建出LoadedApk保存下来,并给AppBindData的info赋值,
之后在makeApplication中使用LoadApk创建ApplicationContext
构造时参数为 ActivityThread LoadedApk
◦Activity对应的Context
首先AMS通过远程调用ActivityThread的scheduleLaunchActivity方法,然后根据远程通讯传递的数据(一是ActivityInfo,一是其他数据)构造出
ActivityClientRecord,并持有之前创建的LoadApk,之后执行performLaunchActivity,在createBaseActivityForActivity中为Activity创建Context
构造时参数为 ActivityThread LoadedApk IBinder(activityinfo)
◦ServiceInfo
*
启动Service,首先AMS会远程调用ActivityThread的scheduleCreateService,然后根据远程通讯传递的数据(一是ServiceInfo一是其他数据)构造出
CreateServiceData,之后调用handleCreateService,在handleCreateService中创建Context,方法和创建Application中的一致
总体来说一个应用包含多个Context的实现类ContextImpl,但是他们内部的LoadApk是相同的,也就是说对于程序来说ContextImpl是轻量级的存在,二LoadAPk才是重量级,
从代码中也可以发现在ContextImpl中不少API的实现都依赖LoadApk
除了以上三种ContextImpl系统中还存在一种即是SystemContext,
相关文章
- android开机动画多长时间_Android开机动画及黑屏[通俗易懂]
- android开发笔记之 Android代码混淆打包
- Android Sdk版本、Support包版本及常用框架最新版本汇总
- 关于android studio 中安装intel haxm问题的解决
- android进阶之了解Android系统与开机过程
- Android基础篇 RelativeLayout.LayoutParams
- android scaleanimation动画,Android 的ScaleAnimation 缩放动画基本运用
- Android preference_android studio preview
- android scaleanimation动画,Android 动画之ScaleAnimation应用详解「建议收藏」
- Android游戏激活成功教程 入门级零基础起步学习激活成功教程!MT管理器+修改器使用方法 小白看了绝对有用
- Android进程间通信(一):基础介绍
- 没有Android基础都能学会的Xposed基础教程
- 【Android 逆向】Dalvik 函数抽取加壳 ① ( Dalvik 下的函数指令抽取与恢复 | dex 函数指令恢复时机点 | 类加载流程 : 加载、链接、初始化 )
- 【Android Gradle 插件】Gradle 构建工具简介 ① ( Gradle 环境配置 | 官网下载 Gradle 软件包 | 在本地用户目录下查找 | 配置 Gradle 环境变量 )
- 【错误记录】Android Studio 集成 ARoute 编译报错 ( 兼容 support 库和 androidx 库 | add ‘tools:replace=“android:appCo )
- 从头开始,手写android应用框架(一)
- Android中android:visibility的3中属性的剖析详解手机开发
- Android系统与Linux之间的联系(android和linux)
- 分析称Android平台将成为谷歌未来主要收入来源
- 机器人操作系统,除了 Android 还有一个 ROS
- Android基础之Fragment与Activity交互详解
- Android中通过view方式获取当前Activity的屏幕截图实现方法