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 上下文。