栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Context,Service,Application,Activity的区别?

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Context,Service,Application,Activity的区别?

Activity,Service,Application 关系图。 (课外)ContextWrapper和是一种装饰模式

1.        ContextWrapper就是一个包装类没有具体的实现,真的是逻辑代码都在ContextImpl中,ContextImpl继承自抽象类Context,并实现了其中的抽象方法。

2.        Context类是最上层的抽象类,在内部定义了大量的抽象方法,其startActivity方法也定义其中。

3.        Activity继承自ContextThemeWapper而ContextThemeWapper又继承自ContextWrapper,最终ContextWrapper才继承自Context。 切记在ContextWapper中是持有Context引用的,而这个Context其实就是ContextImpl也就持有ContextImpl对象。

 那么ContextImpl是在何时被创建, 即在 ActivityThread中调用getHandler()方法这个方法返回了以一个H对象,

 在处理这段调用主要调用了handelLaunchActivity方法来处理没在这个方法中又调用了performLaunchActivity方法获取到了Activity的实例。

 在performLaunchActivity中会对Activity进行大量的初始化参数。

 

 

并且可以看出Activity和Application,Context是密不可分的.

那么我们分析下createbaseContextForActivity是怎么初始化ContextImlp的,

 在createbaseContextForActivity方法中通过ContextImpl的静态方法,createActivityContext方法获取到ContextImpl实例对象,并通过setOuterContext进行和Activity关联。

而Application中就比较简单了同过,markeApplication 创建了一个 Application而这个Application就贯穿全局了。

从此得出 Activity(个数)+Service(个数)+1个Application =Context个数。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/530828.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号