Android Activity 上下文和 Application 上下文的区别


什么是上下文(Context)?

上下文为我们提供了应用程序当前状态的信息。它允许我们与 Android 组件进行交互。它允许我们访问文件和其他资源,例如图片、活动、片段和服务。Context 类提供了访问构建 Android 应用程序所需的一些资源和服务的途径,包括:

  • 资源 - 通过 Context 可以访问存储在资源对象中的资源,例如布局、图片和字符串。

  • 系统服务 - 它提供对系统服务的访问,例如电源管理器、通知管理器和位置管理器。

  • 偏好设置 - 偏好设置用于以键值对的形式存储和检索数据,可以通过 Context 进行访问。

  • 资产管理器 - 用于访问与应用程序打包在一起的原始资产文件。

  • 数据库 - 它提供对应用程序使用的数据库的访问。

上下文(Context)的两种类型是什么?

上下文有两种类型,如下所示:

  • Activity 上下文

  • Application 上下文

在 Android 中,“Activity”和“Application”都是“Context”类的子类,它提供了对应用程序特定资源和类的访问。

这两种上下文的主要区别在于,“Activity”上下文与“Activity”的生命周期绑定,而“Application”上下文与整个应用程序的生命周期绑定。

什么是 Android 中的 Activity 上下文?

当你使用任何“Activity”上下文时,它都与你当前所在的 Activity 绑定。这意味着如果 Activity 被销毁,上下文也将被销毁。当需要访问与特定 Activity 绑定的资源或类(例如特定于该 Activity 的视图或资源)时,应该使用 Activity 上下文。

Activity 上下文提供的功能

  • 启动 Intent - 使用 startActivity() 或 startActivityForResult() 方法启动新的 Activity 或服务。

  • 资源访问 - 通过 getResources() 方法访问资源,例如字符串、布局和图片。

  • 视图加载 - Activity 上下文用于借助 LayoutInflator 加载视图。

  • 对话框创建 - 用于创建 Alert 对话框和进度对话框。

  • 操作栏 - 用于管理操作栏,例如设置标题、图标和导航。

什么是 Android 中的 Application 上下文?

另一方面,“Application”上下文与应用程序本身绑定,并且只要应用程序正在运行,它就会保持存活状态。这意味着它可以在多个 Activity 中使用,并且对于访问与任何特定 Activity 无关的全局资源和类(例如共享首选项或数据库帮助程序)非常有用。

Application 上下文提供的功能

  • 资源访问 - 通过 Resource 类访问应用程序资源,例如布局、尺寸、字符串。

  • 应用程序级信息访问 - 通过 Package Manager 类提供与应用程序相关的信息,例如包名、应用程序名称、应用程序版本。

  • 应用程序级广播 - 使用 registerReceiver() 和 sendBroadCast() 方法发送和接收应用程序级广播。

  • 资源缓存 - 使用资源(例如布局和可绘制对象)来提高应用程序性能。

Activity 上下文和 Application 上下文的区别

Activity 上下文

Application 上下文

Activity 上下文的生命周期比 Application 上下文短。它与 Activity 一起创建和销毁。

Application 上下文在应用程序启动时创建,并在应用程序终止时一直存在。

Activity 上下文的生命周期较短,可以随 Activity 一起销毁。

Application 上下文的生命周期较长,在应用程序的整个生命周期中都驻留在内存中。

Activity 上下文仅限于当前 Activity,例如片段和视图。

Application 上下文可用于整个应用程序,包括所有 Activity 及其组件。

结论

总之,如果需要访问与特定 Activity 绑定的资源,请使用 Activity 上下文。如果需要访问与任何特定 Activity 无关的资源,请使用 Application 上下文。

更新时间: 2023年5月9日

3K+ 阅读量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告