在Android编程中,Context类到底是什么?它用于什么?
我在开发者网站上读过这篇文章,但我无法清楚地理解它。
在Android编程中,Context类到底是什么?它用于什么?
我在开发者网站上读过这篇文章,但我无法清楚地理解它。
当前回答
上下文是有关应用程序环境的全局信息的“接口”。实际上,Context实际上是一个抽象类,其实现由Android系统提供。
它允许访问特定于应用程序的资源和类,以及应用程序级操作的调用,例如启动活动、广播和接收意图等。
在下图中,您可以看到一个类的层次结构,其中Context是这个层次结构的根类。特别值得强调的是,活动是上下文的后代。
其他回答
android.content.Context类的实例提供到执行应用程序的android系统的连接。例如,您可以通过上下文检查当前设备显示的大小。
它还允许访问项目的资源。它是有关应用程序环境的全局信息的接口。
Context类还提供对Android服务的访问,例如报警管理器以触发基于时间的事件。
活动和服务扩展了Context类。因此,它们可以直接用于访问上下文。
将其视为虚拟机孤立了应用程序或服务运行的进程。孤立的环境可以访问大量底层系统信息和某些允许的资源。您需要该上下文来获得这些服务。
老板助理类比
在深入研究Context的技术性之前,让我们先做一个小类比
每个老板都有一个助手或一个办事少的人(跑腿)对他来说,重要而耗时的事情。例如,如果需要一份文件或咖啡,那么助手就可以跑了。老板不会知道后台正在发生什么,但文件或任务将生产所以在这里Boss-Android应用程序助手-上下文文件或咖啡杯-资源
Android开发者官方网站对Context的描述
上下文是应用程序相关资源的访问点
让我们看看这些资源或任务
启动活动。获取文件系统上特定于应用程序的缓存目录的绝对路径。确定系统中运行的特定进程和用户ID是否允许给定权限。检查是否已授予您特定权限。
等等因此,如果一个Android应用程序想要启动一个活动,它将直接转到Context(访问点),Context类将资源返回给他(在本例中为Intent)。
与任何其他类一样,Context类具有字段和方法。您可以在官方文档中探索更多关于Context的内容,它几乎涵盖了所有内容、可用的方法、字段,甚至包括如何将字段与方法一起使用。
了解android环境的简单示例:
每个老板都有一个助手来照顾,来完成所有不那么重要和耗时的任务。如果需要一份文件或一杯咖啡,一名助手就在路上。一些老板几乎不知道办公室里发生了什么,所以他们也会询问助手。他们自己做一些工作,但在大多数其他事情上,他们需要助手的帮助。
在这种情况下,
Boss–是Android应用程序
助手–是一个上下文
文件/咖啡杯–是资源
当我们需要获取有关应用程序的不同部分(如活动、应用程序等)的信息时,我们通常会调用上下文。
涉及上下文的某些操作(需要助手的操作):
加载公共资源创建动态视图显示Toast消息启动活动等。
获取上下文的不同方式:
getContext()
getBaseContext()
getApplicationContext()
this
Context是Android提供的抽象类,因此,它的任务是将应用程序代码与Android系统连接起来。通过从Context继承的类(活动、服务和应用程序),您的应用程序能够访问仅由操作系统访问的资源和功能。
当上下文后代对象被操作系统实例化(通过OS控制的实例化机制,如“意图”)时,它们将由操作系统管理,因此,它们将获得生命周期。
除此之外,将上下文作为方法调用中的参数传递,允许此方法将上下文用作与操作系统通信的通道,以便到达操作系统并要求其执行某些操作或返回某些资源。
将上下文与清单一起可视化
为了将Android环境和Manifest可视化,一个旧的呼叫中心交换机就是一个很好的类比。
基础是Android系统,连接每个正在运行的应用程序的所有应用程序组件的所有电线都出现在这里。
每个“交换机应用程序”都包含一些插件孔,它们代表应用程序的清单组件声明。因此,通过清单声明,Android系统了解到这些插件孔的存在,从而可以通过意图创建对象来插入新的上下文连接。每条连线表示一个Android上下文,该上下文连接到应用程序的某个可启动组件或应用程序本身。您可以使用现有的电线,因为它与Android系统连接,以便请求完成需要通过操作系统完成的所有事情。你可以假设当一个活动被破坏时,它的电线被拔掉了。当构建另一个活动(或另一个组件)时,一条新的电线会出现并连接到正确的清单声明的插孔。
我写了一篇完整的文章,解释了Context如何将您的应用程序与android系统相结合: