安卓Context上下文对象

在开发中很多地方都会用到Context,相信很多读者都是会一知半解的,那么在安卓中"上下文"是指什么意思? 首先我们要回顾下,在我们大语文中,上下文我们可以理解为语境,而在我们编程开发中,我们可以理解为当前对象在程序中所处的一个环境,一个与系统交互的过程.

一 Context 体系

Android系统的上下文对象,即在Context中,为我们开发者封装了一个这个"语境".博文拿开发项目为例,点击一个基类,鼠标放在AppCompatActivity上,查看类继承关系(快捷键:Ctrl + H ),即可看到下图这个体系.大家有做Android开发的都了解知道Activity,Service,Application都是继承自Context.

android listview 上下文菜单 安卓上下文对象_Context上下文

二 Context在何时创建与使用

Context在何时创建?

  • 创建 Application(应用第一次启动时创建)
  • 创建 Activity
  • 创建 Service

共同点:创建Context时机就是在创建Context的实现类的时候.

1,当应用程序第一次启动时,Android系统都会创建一个Application Context,所有的组件都共同拥有这样一个Context对象,这个应用上下文对象贯穿整个应用进程的生命周期,为应用全局提供了功能和环境支持.
2,而创建Activity和Service组件时,系统也会给它们提供运行的上下文环境,即创建Activity实例,Service实例的Context对象.

Context的使用?

开发人员在Activity中获取Context对象时,可以直接使用this,而在匿名内部类中,就必须制定**Activity.this才可以获得该Activity的Context对象.当然,我们也可以通过getApplicationContext()方法来获取整个App的Context,但是通过getApplicationContext()方法获得的是整个应用的上下文引用,这与某个组件的上下文引用,在某些时候还是有区别使用的.

区别:
1,Application是一个长引用,Activity是短引用。
2,getApplicationContext()适用于存储那些需要反复读取的对象,比如用户的用户名和密码,应用程序的当前设置等。
3,Activity适用于当前活动窗体,比如显示一个dialog,或新建一个View,传入的context对象就应该是当前Activity,而非getApplicationContext()

三 尾言