在Android编程中,Context类到底是什么?它用于什么?

我在开发者网站上读过这篇文章,但我无法清楚地理解它。


当前回答

上下文是系统的句柄;它提供诸如解析资源、访问数据库和首选项等服务。Android应用程序有活动。上下文就像应用程序当前运行的环境的句柄。活动对象继承上下文对象。

有关更多信息,请参阅Android Studio的Android开发简介-教程。

其他回答

Android上下文是一个接口(在一般意义上,而不是在Java意义上;在Java中,上下文实际上是一个抽象类!),它允许访问特定于应用程序的资源、类以及有关应用程序环境的信息。

如果你的android应用程序是一个web应用程序,你的上下文将类似于ServletContext(我没有在这里进行精确的比较)。

您的活动和服务还扩展了Context,因此它们继承了所有这些方法来访问应用程序正在运行的环境信息。

上下文是指不同时间段内的组件(或应用程序)。如果我确实在下午1点到2点之间吃了那么多食物,那么我在这段时间内使用的所有方法(或资源)都将被用来访问。内容是特定时间的组件(应用程序)。应用程序组件的上下文根据组件或应用程序的底层生命周期不断变化。例如,在Activity的onCreate()内,

getBaseContext()--提供由Activity的构造函数设置(创建)的Activity的上下文。getApplicationContext()--在创建应用程序期间提供Context设置(已创建)。

注意:<application>包含所有Android组件。

<application>
    <activity> .. </activity> 

    <service>  .. </service>

    <receiver> .. </receiver>

    <provider> .. </provider>
</application> 

这意味着,当您从任何组件内部调用getApplicationContext()时,您正在调用整个应用程序的公共上下文。

系统根据组件的生命周期不断修改上下文。

简单地说,Androids环境是一个混乱,除非你不再担心,否则你不会喜欢它。

Android上下文包括:

上帝反对。当你开始为Android开发时,你想在所有应用程序中传递的东西,但当你稍微接近编程、测试和Android本身时,就会避免这样做。不明确的依赖关系。内存泄漏的常见来源。用于测试的PITA。Android系统用于分配权限、资源、偏好、服务、广播、样式、显示对话框和膨胀布局的实际上下文。对于一些单独的事情,您需要不同的Context实例(显然,您不能显示来自应用程序或服务上下文的对话框;来自应用程序和活动上下文的布局可能不同)。

上下文是有关应用程序环境的全局信息的“接口”。实际上,Context实际上是一个抽象类,其实现由Android系统提供。

它允许访问特定于应用程序的资源和类,以及应用程序级操作的调用,例如启动活动、广播和接收意图等。

在下图中,您可以看到一个类的层次结构,其中Context是这个层次结构的根类。特别值得强调的是,活动是上下文的后代。

上下文的定义

上下文表示环境数据它提供了对数据库等内容的访问

更简单的术语(示例1)

假设Person-X是一家初创软件公司的首席执行官。公司有一位首席架构师,这位首席架构师在公司内完成所有涉及数据库、UI等的工作等现在,首席执行官雇佣了一名新的开发人员。是建筑师告诉新聘人员的责任基于新人的技能数据库或UI等工作。

更简单的术语(示例2)

这就像访问应用程序资源的android活动。这与你去酒店时想吃早餐、午餐类似&在合适的时间吃饭,对吧?在逗留期间,你还喜欢其他很多东西。你是怎么得到这些东西的?你让客房服务人员为你带来这些东西。这里,客房服务人员是上下文,因为您是单一活动和酒店将成为您的应用程序,最后是早餐、午餐&晚餐必须是资源。


涉及上下文的内容包括:

正在加载资源。启动新活动。创建视图。获取系统服务。


上下文是Activity、Service、Application等的基类

描述这一点的另一种方式是:将上下文视为电视的远程&电视中的频道是资源、服务、使用意图等--这里,远程充当访问前台所有不同资源的访问权限。

因此,Remote可以访问资源、服务、使用意图等渠道。。。。同样地访问远程的人自然可以访问所有的东西,如资源、服务、使用意图等


获取上下文的不同方法

getApplicationContext()获取上下文()getBaseContext()或者这个(在活动课上)


例子:

TextView tv = new TextView(this);

关键字this指的是当前活动的上下文。