Context字面意思上下文,或者叫做场景,也就是用户与操作系统操作的一个过程,比如你打电话,场景包括电话程序对应的界面,以及隐藏在背后的数据;
从程序的角度上来理解:Context是个抽象类,而Activity、Service、Application等都是该类的一个实现。
在仔细看一下上图:Activity、Service、Application都是继承自ContextWrapper,而ContextWrapper内部会包含一个base context,由这个base context去实现了绝大多数的方法。
一、Activity和Application作为context时的区别。当我们需要Context的时候,如果是在当前的Activity中,我们就大多t直接使用this,在匿名内部类中,因为this不能用,所以需要写成,XXActivity.this.很多哥们会偷懒,直接来个getApplictionContext!
但是大家有没有想过xxActivity.this 和getApplictionContext的区别在哪里呢 ?
(1)、首先,xxActivity.this 和getApplictionContext 返回的肯定不是同一个对象,一个是当前Activity的上下文,一个是项目
Application的 上下文(2)、既然区别这么明显,那么各自的使用场景肯定不同,乱使用可能会带来一些问题。
只要把握住一点,凡是跟UI相关的,都应该使用Activity做为Context来处理;其他的一些操作,Service,Activity,Application等实例都可以,当然了,注意Context引用的持有,防止内存泄漏。