Android运行环境Context理解

前言


   Context相信有Android开发经验的人不陌生,基本上每天都在接触,谈谈自己对Context的理解

内容


Context类型

   Context通常被翻译为上下文,我通常理解为Android的运行环境,在Android中,Activity、Service、Application都是继承自Context。Android程序不像Java程序一样,随便创建一个类,写个main()方法就能跑了,而是要有一个完整的Android工程环境,在这个环境下,我们有像Activity、Service、BroadcastReceiver等系统组件,而这些组件并不是像一个普通的Java对象new一下就能创建实例的了,而是要有它们各自的上下文环境,也就是这里讨论的Context。

   Android应用程序如下几个时间点创建应用的上下文Context:

  1. 创建Application时

  2. 创建Activity时

  3. 创建Service时

   细心的人可以发现,创建Context的时机就是创建Context的实现类。在应用第一次启动的时候,系统就会创建Application对象,同时创建ApplicationContext,而系统所有的组件都拥有一个这样的上下文对象,这个上下文对象贯穿整个应用程序的生命周期,为系统提供了全局的功能和环境支持,当然创建组件的时候,系统也会给组件创建他们自己相应的上下问对象,但是从原理上来说某些时候二者是有一些区别的。

getContext()、getApplicationContext()、this的区别

   使用this,说明当前类是context类的子类,一般是application activity等

   getApplicationContext()指的是app所使用的application,是在AndroidManifest唯一指定的意味着,在当前app的任意位置使用这个函数得到的是同一个Context,而使用getContext获取的是当前对象所在的Context。

   举个简单的例子。

   我们在公司上班, 我们是一个类,公司是一个类,公司.this是context()即公司的环境,我.this不是context,而我getcontext()是指公司的环境。而getApplicationContext()则可以看做是所有公司的集合,发生的所有事情都在这个集合中,有且只有一个。


版权声明:本文为博主原创文章,转载请注明出处KidSea

小额赞助,鼓励作者写出更好的文章