Android Context对象继承分析

热门标签

,

特别声明:文章多为网络转载,资源使用一般不提供任何帮助,特殊资源除外,如有侵权请联系!

一、组件对Context继承关系

Android Context对象继承分析

可以看到Activity、Service、Application都是Context的子类;

注意:广播是个普通对象,没有继承Context,只是在onReciever参数中可以获取

总结:

①Context是个抽象类,而Activity、Service、Application等都是该类的一个实现。

②Service和Application继承的是ContextWrapper、Activity继承自ContextThemeWrapper,因此,acitivty在加载布局时回自动选择Manifest配置的主题。而Service和Application无法选择主题

③Application的Context并不一定适合做所有任务

 

二、用法总结

在仔细看一下上图:Activity、Service、Application都是继承自ContextWrapper,而ContextWrapper内部会包含一个base context,由这个base context去实现了绝大多数的方法。

Android Context对象继承分析

大家注意看到有一些NO上添加了一些数字,其实这些从能力上来说是YES,但是为什么说是NO呢?下面一个一个解释:

数字1:启动Activity在这些类中是可以的,但是需要创建一个新的task。一般情况不推荐。

数字2:在这些类中去layout inflate是合法的,但是会使用系统默认的主题样式,如果你自定义了某些样式可能不会被使用。

数字3:在receiver为null时允许,在4.2或以上的版本中,用于获取黏性广播的当前值。(可以无视)

 

三、getApplicationContext()与getContext()区别

①同一个Activity中,getContext()实际上和Activity.this是同一个对象。

②getApplicationContext()实质是Application对象。

未经允许不得转载:作者:SheaYang, 转载或复制请以 超链接形式 并注明出处 技术Dog|博客
原文地址:《Android Context对象继承分析》 发布于2019-10-25

分享到:
赞(0)

评论 抢沙发

3 + 5 =


Android Context对象继承分析

长按图片转发给朋友

Vieu4.0主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录