漫画:关于 Context 不得不说的细节

640?wx_fmt=gif

640?wx_fmt=jpeg

作者 | 码妞

本文经授权转载自码个蛋(ID:codeegg)

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg


640?wx_fmt=png

Context到底是啥?


Context 本身是一个抽象类,它的实现类为 ContextImpl。

另外有子类 ContextWrapper 和 ContextThemeWrapper,这两个子类都是 Context 的代理类,主要区别是 ContextThemeWrapper 有自己的主题资源。

看图:

640?wx_fmt=png

一个 Context 意味着一个场景,一个场景就是我们和软件进行交互的一个过程。

从安卓程序的角度来看,其实一个 Activity 就是一个 Context ,一个 Service 也是一个 Context。

640?wx_fmt=jpeg

640?wx_fmt=jpeg


640?wx_fmt=png

Context有啥作用?


有啥用?要看它能做啥,看看主要提供了哪些接口了。

640?wx_fmt=png

640?wx_fmt=png


还挺多的,看起来管得挺多,四大组件都管着,像个 Application 大管家。

640?wx_fmt=png

一个App里有多少个Context?

前面说啦,一个Activity就是一个场景(Context),一个Service也是一个场景,所以,应用程序中有多少个Activity或者Service就会有多少个Context对象,也就是有多少个场景。


640?wx_fmt=png

ContextImpl和ContextWrapper有啥区别?


看下ContextWrapper:

640?wx_fmt=png

再看下ContextImpl:

640?wx_fmt=png

比较下:

640?wx_fmt=png

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

不同组件创建ContextImpl的方式:

640?wx_fmt=png


640?wx_fmt=png

总结


这几个类的关系:

640?wx_fmt=png

640?wx_fmt=jpeg

640?wx_fmt=jpeg

参考:

https://juejin.im/post/5c1fab7d5188254eb05fbe48

https://juejin.im/post/5865bfa1128fe10057e57c6

作者简介:码个蛋,码上养成好习惯。

640?wx_fmt=png

640?wx_fmt=jpeg

 热 文 推 荐 

换脸软件 ZAO 刷屏:你在玩换脸,别人想要你的脸!

70 后程序媛写给准程序媛的忠告 | 程序员有话说

虚拟化技术发展编年史

华为方舟编译器开源!前华为人重磅解读!

Dropout、梯度消失/爆炸、Adam优化算法,神经网络优化算法看这一篇就够了

只给测试集不给训练集,要怎么做自己的物体检测器?

mysql表设计要注意什么?

别让分析公司卖了你:一文读懂比特币的私密性及隐私保护

☞她说:行!没事别嫁程序员!

 
 

640?wx_fmt=png

你点的每个“在看”,我都认真当成了喜欢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值