在Android编程中,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,…);

其他回答

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

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

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

上下文基本上用于资源访问和获取应用程序(用于应用程序上下文)或活动(用于活动上下文)或任何其他的环境详细信息。。。

为了避免内存泄漏,您应该为每个需要上下文对象的组件使用应用程序上下文。。。。有关详细信息,请单击此处

android.content.Context类的实例提供到执行应用程序的android系统的连接。例如,您可以通过上下文检查当前设备显示的大小。

它还允许访问项目的资源。它是有关应用程序环境的全局信息的接口。

Context类还提供对Android服务的访问,例如报警管理器以触发基于时间的事件。

活动和服务扩展了Context类。因此,它们可以直接用于访问上下文。

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

Android上下文包括:

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

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

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

以下是示例

 public class MyActivity extends Activity {

      public void Testing() {

      Context actContext = this; /*returns the Activity Context since   Activity extends Context.*/

      Context appContext = getApplicationContext();    /*returns the context of the single, global Application object of the current process. */

      Button BtnShowAct1 = (Button) findViewById(R.id.btnGoToAct1);
      Context BtnContext = BtnShowAct1.getContext();   /*returns the context of the View. */

有关详细信息,请访问http://developer.android.com/reference/android/content/Context.html