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

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


当前回答

Context是Android提供的抽象类,因此,它的任务是将应用程序代码与Android系统连接起来。通过从Context继承的类(活动、服务和应用程序),您的应用程序能够访问仅由操作系统访问的资源和功能。

当上下文后代对象被操作系统实例化(通过OS控制的实例化机制,如“意图”)时,它们将由操作系统管理,因此,它们将获得生命周期。

除此之外,将上下文作为方法调用中的参数传递,允许此方法将上下文用作与操作系统通信的通道,以便到达操作系统并要求其执行某些操作或返回某些资源。

将上下文与清单一起可视化

为了将Android环境和Manifest可视化,一个旧的呼叫中心交换机就是一个很好的类比。

基础是Android系统,连接每个正在运行的应用程序的所有应用程序组件的所有电线都出现在这里。

每个“交换机应用程序”都包含一些插件孔,它们代表应用程序的清单组件声明。因此,通过清单声明,Android系统了解到这些插件孔的存在,从而可以通过意图创建对象来插入新的上下文连接。每条连线表示一个Android上下文,该上下文连接到应用程序的某个可启动组件或应用程序本身。您可以使用现有的电线,因为它与Android系统连接,以便请求完成需要通过操作系统完成的所有事情。你可以假设当一个活动被破坏时,它的电线被拔掉了。当构建另一个活动(或另一个组件)时,一条新的电线会出现并连接到正确的清单声明的插孔。

我写了一篇完整的文章,解释了Context如何将您的应用程序与android系统相结合:

其他回答

上下文的定义

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

更简单的术语(示例1)

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

更简单的术语(示例2)

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


涉及上下文的内容包括:

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


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

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

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


获取上下文的不同方法

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


例子:

TextView tv = new TextView(this);

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

上下文意味着Android可以知道我应该参加哪些活动。

1-Toast.makeText(上下文,“输入所有详细信息”,Toast.LNGTH_SHORT).show();它用于此。上下文上下文=ActivityName.this;

2-startActivity(新的Intent(context,LoginActivity.class));

在这个上下文中,意味着你想从哪个活动转到其他活动。context或ActivityName。这比getContext和getApplyinContext更快。

语境到底是什么?

根据Android参考文档,它是一个表示各种环境数据的实体。它提供对本地文件、数据库、与环境相关的类加载器、服务(包括系统级服务)等的访问。在这本书中,以及在您使用Android进行的日常编码中,您将看到上下文频繁传递。

摘自《实践中的Android》一书,第60页。

几个Android API需要Context作为参数

如果您查看各种Android API注意,其中许多都将android.content.Context对象作为参数您还将看到“活动”或“服务”通常用作上下文这是因为这两个类都是从Context扩展的。

简单地说:

顾名思义,它是应用程序/对象当前状态的上下文。它让新创建的对象了解发生了什么。通常,您调用它来获取有关程序的另一部分(活动和包/应用程序)的信息。

您可以通过调用getApplicationContext()、getContext()和getBaseContext()或this(当在从context扩展的类中时,例如Application、Activity、Service和IntentService类)来获取上下文。

上下文的典型用法:

创建新对象:创建新视图、适配器和侦听器:TextView tv=新建TextView(getContext());ListAdapter适配器=新的SimpleCursorAdapter(getApplicationContext(),…);访问标准公共资源:服务,如LAYOUT_INFLATER_SERVICE、SharedPreferences:context.getSystemService(LAYOUT_INFLATER_SERVICE)getApplicationContext().getSharedPreferences(*name*,*mode*);隐式访问组件:关于内容提供商、广播、意图getApplicationContext().getContentResolver().query(uri,…);

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

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

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

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

    <service>  .. </service>

    <receiver> .. </receiver>

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

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

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