美文网首页
11、对于 Context,你了解多少?

11、对于 Context,你了解多少?

作者: 五道杠小学生 | 来源:发表于2019-05-15 16:52 被阅读0次

我们知道,Android应用都是使用Java语言来编写的,那么大家可以思考一下,一个Android程序和一个Java程序,他们最大的区别在哪里?划分界限又是什么呢?其实简单点分析,Android程序不像Java程序一样,随便创建一个类,写个main()方法就能跑了,而是要有一个完整的Android工程环境,在这个环境下,我们有像Activity、Service、BroadcastReceiver等系统组件,而这些组件并不是像一个普通的Java对象new一下就能创建实例的了,而是要有它们各自的上下文环境,也就是我们这里讨论的Context。可以这样讲,Context是维持Android程序中各组件能够正常工作的一个核心功能类。


20151022212109519.png

Context的继承结构还是稍微有点复杂的,可以看到,直系子类有两个,一个是ContextWrapper,一个是ContextImpl。那么从名字上就可以看出,ContextWrapper是上下文功能的封装类,而ContextImpl则是上下文功能的实现类。而ContextWrapper又有三个直接的子类,ContextThemeWrapper、Service和Application。其中,ContextThemeWrapper是一个带主题的封装类,而它有一个直接子类就是Activity。
ContextWrapper里面有一个Context类型的成员变量mBase,当然它实际的类型是ContextImpl。ContextWrapper实现方法的时候调用了mBase的方法。(装饰模式)

那么在这里我们至少看到了几个所比较熟悉的面孔,Activity、Service、还有Application。由此,其实我们就已经可以得出结论了,Context一共有三种类型,分别是Application、Activity和Service。这三个类虽然分别各种承担着不同的作用,但它们都属于Context的一种,而它们具体Context的功能则是由ContextImpl类去实现的。

context导致的内存泄漏多是长生命周期去持有了短生命周期的实例造成的。像工具类如果需要context的话,能传applicationCOntext 最好传它。

相关文章

  • 11、对于 Context,你了解多少?

    我们知道,Android应用都是使用Java语言来编写的,那么大家可以思考一下,一个Android程序和一个Jav...

  • 你对Context了解多少

    说起Context,在编写android代码时基本离不开它,吐司的使用、启动服务、创建对话框等等,先看下官方文档的...

  • 你对Context了解多少呢

    目录 前言 在Android应用进程的创建 — Activity的启动流程中我们发现,Application和Ac...

  • 对于皮肤,你了解多少?

    对于女性来说,几乎人人家里都有护肤品,哪怕是一瓶水,乳液,都是我们用来护肤的,说白了就是保护脸蛋的,但是我们怎么才...

  • 对于甲醛,你了解多少?

    37岁的小王在租住自如出租房后,因急性髓系白血病于2018年7月去世,引发了社会对房子装修安全的关注。小王病逝后,...

  • 对于孩子,你了解多少?

    《捕捉儿童敏感期》孙瑞雪(第一、第二章) 奔三的年纪,身边大部分的同龄人都有了孩子,宝宝出生的时候晒出来的都是初为...

  • 对于盐包,你了解多少?

    2017年4月8日 星期六 晴天 大家好,我是日记星球171号星宝宝吴敏,我正在参加日记星球轻而易举写作法第四期2...

  • 对于友谊,你了解多少?

    友谊,一个需要用尽一辈子去感悟的话题,对于它,自己确实不知道该怎么去表达。用百度百科极其理性的话语来解释——友谊是...

  • 对于近视,你了解多少?

    近视,一直是近几年来的热点。在前几年,近视一般在初中以后多见,随着社会的发展,电脑、手机、平板等电子产品的普及,近...

  • 对于副业你了解多少

    越来越多的人意识到了副业的重要性,可是对于副业了解有多少呢?现在网络上有一个名词叫做“副业刚需”不知道你有没有听说...

网友评论

      本文标题:11、对于 Context,你了解多少?

      本文链接:https://www.haomeiwen.com/subject/etqmaqtx.html