简单来说,Context 是一个接口,它包含有关应用程序环境的全局信息。Context 允许访问特定于应用程序的资源(例如字符串、主题、资产等)和类。同样,它处理应用程序级别的操作,如启动Activity、发送和接收广播。简而言之,Context 表示获取环境数据的句柄。

在这里你可以看到 Context 的常见用法。

alt text

同样地,下面列表中是一些 Context 的示例方法。正如我们在开始时所说的,你可以使用 Context 访问应用程序特定的资源。

  • getAssets() 获取资源管理器
  • getResources() 获取资源
  • getPackageManager() 获取包管理器
  • getString() 获取字符串
  • getSharedPrefsFile() 获取共享首选项文件

有两种主要类型的上下文。

1- Application Context

这种类型的上下文直接与应用的生命周期相关联。你可以通过 getApplicationContext() 方法访问它。

2- Activity Context

这种类型的上下文与Activity的生命周期相关联。你可以通过 getContext() 方法访问它。

除此之外,我们还有 getBaseContext() 方法。

getBaseContext() 是 ContextWrapper 的成员方法。

ContextWrapper 是 Context 的代理实现,它简单地将所有调用委托给另一个 Context。可以通过子类化来修改行为,而不改变原始的 Context。

alt text

除了这些之外,你可以看到上下文和其他类之间的关系。正如你所看到的,上下文是这个层次结构的根节点。

alt text