美文网首页程序员
Context的一点理解

Context的一点理解

作者: 饮水思源为名 | 来源:发表于2018-08-02 17:48 被阅读20次

  Content即上下文对象,在我们android开发中随处可见,并不陌生。在加载资源、启动一个新的Activity、获取系统服务、获取内部文件(夹)路径、创建View操作时等都需要Context的参与,可见Context的常见性。大家可能会问到底什么是Context,Context字面意思上下文,或者叫做场景,也就是用户与操作系统作的一个过程,比如你打电话,场景包括电话程序对应的界面,以及隐藏在背后的数据;
  但是在程序的角度Context又是什么呢?在程序的角度,我们可以有比较权威的答案,Context是个抽象类,我们可以直接通过看其类结构来说明答案:



由此我们可以看到,Application、Activity、Service都是Context的子类。


Activity和Application创建的context的区别:

  1. 他们虽然的都继承的Context类,但是Activity相对于Application多一个名为ContextThemeWrapper的父类。该类包含了主题(Theme)相关接口,即android.theme属性指定的。
  2. Application在app运行开始时创建,环绕整个app,他的context相对于Activity更持久

引用保持:

  存在这样的情况,当引用一个工具类,需要访问资源,那么就避不开context的参与。在这样的情况下就得注意Context的引用问题。
  当你在工具类中传入一个Activity的Context。而我们这个工具类是一个static的强引用。那么问题就来了。也就是说这个Activity在整个程序停止运行前都无法被回收销毁。这样就成为了造成内存泄漏的风险。那么我们不用强引用,改为弱引用,是不是就可以了?答案是不行的,因为很有可能出现因为Activity被回收,导致context为null,造成NullPointException。
  为了避免这种情况,我们此时就应该使用Application的Context。因为他们的生命周期是相同的。这样我们就可以避免内存泄漏的问题。

Context的应用场景:

总结:

  Context上下文对象,抽象类。是Activity、Service、Application的主类。在传递、使用context的时候,最重要的考虑应该是他的引用保持时间,避免造成内存泄漏、NullPointExcepiton等问题。

相关文章

  • Context的一点理解

      Content即上下文对象,在我们android开发中随处可见,并不陌生。在加载资源、启动一个新的Activi...

  • 源码学习->05Context

    参考文章 : 1. 理解Android Context理解Application创建过程 Context : 1、...

  • context的理解

    转载自:http://blog.csdn.net/singwhatiwanna/article/details/2...

  • context 的理解

    怎样理解 context 可以理解为场景,也就是用户与操作系统操作的过程,比如你打电话,场景包括电话程序对应的界面...

  • Context理解

    官方文档 https://doc.react-china.org/docs/context.html#api 个人...

  • 理解Context

    此文为Android内核剖析学习 Context是啥 一个Context意味着一个场景,一个场景就是用户和操作系统...

  • 理解Context

    什么是Context Context: 字面理解为上下文,语境。Android应用模型是基于组件的应用设计模式,组...

  • 理解Context

    我们平时对Context的理解无外乎两方面: 调用Context的方法,比如启动activity,访问资源; 作为...

  • Context 理解

    继承关系 Context是个抽象类,在加载资源、启动一个Activity、获取系统服务、获取内部文件的路径,及创建...

  • 对 Context 的理解

    对 Context 的理解 1. Context的作用: Context 是应用组件的上下文,有了 Context...

网友评论

    本文标题:Context的一点理解

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