Android 什么是';上下文';在安卓上?

Android 什么是';上下文';在安卓上?,android,android-context,Android,Android Context,在Android编程中,上下文类到底是什么?它的用途是什么 我在报纸上读到过,但我不能清楚地理解它。简单地说: 顾名思义,它是应用程序/对象当前状态的上下文。它让新创建的对象了解发生了什么。通常,您调用它来获取有关程序另一部分(活动和包/应用程序)的信息 您可以通过调用getApplicationContext()、getContext()、getBaseContext()或this(在从context扩展的类中,例如应用程序、活动、服务和IntentService类)来获取上下文 上下文的典型

在Android编程中,
上下文
类到底是什么?它的用途是什么

我在报纸上读到过,但我不能清楚地理解它。

简单地说:

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

您可以通过调用
getApplicationContext()
getContext()
getBaseContext()
this
(在从
context
扩展的类中,例如应用程序、活动、服务和IntentService类)来获取上下文

上下文的典型用法:

  • 创建新对象: 创建新视图、适配器和侦听器:

     TextView tv = new TextView(getContext());
     ListAdapter adapter = new SimpleCursorAdapter(getApplicationContext(), ...);
    
  • 访问标准公共资源: 布局\充气机\服务、共享参考等服务:

     context.getSystemService(LAYOUT_INFLATER_SERVICE)
     getApplicationContext().getSharedPreferences(*name*, *mode*);
    
  • 隐式访问组件: 关于内容提供商、广播、意图

     getApplicationContext().getContentResolver().query(uri, ...);
    

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

      有关更多信息,请查看。

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

      如果您的android应用程序是一个web应用程序,那么您的上下文将类似于
      ServletContext
      (我在这里不做精确的比较)


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

      上下文是对当前对象的引用,如下所示。上下文还允许访问有关应用程序环境的信息。

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


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

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

      从“”一书中,第。六十

      一些Android API需要一个
      上下文
      作为参数

      如果你浏览各种Android API,你会发现 请注意,它们中的许多将
      android.content.Context
      对象作为 参数您还将看到,活动或服务通常用作
      上下文
      。这是因为这两个类都是从
      上下文扩展而来的

      将其视为将应用程序或服务运行的进程孤立起来的VM。筒仓式环境可以访问一组底层系统信息和某些允许的资源。您需要该上下文才能访问这些服务。

      android.content.context
      提供到android系统和项目资源的连接。它是有关应用程序环境的全局信息的接口

      上下文还提供对Android服务的访问,例如位置服务


      活动和服务扩展了
      上下文

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

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

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


      Android中的上下文主题似乎让许多人感到困惑。人们只知道在安卓系统中做基本的事情经常需要上下文。人们有时会感到恐慌,因为他们试图执行一些需要上下文的操作,但他们不知道如何“获取”正确的上下文。我将尝试在安卓系统中揭开上下文的神秘面纱。对这个问题的全面处理超出了本文的范围,但我将尝试给出一个总体概述,以便您了解什么是上下文以及如何使用上下文。为了理解上下文是什么,让我们看一下源代码:

      什么是上下文?

      文档本身提供了一个非常简单的解释:Context类是“应用程序环境全局信息的接口”

      上下文类本身被声明为抽象类,其实现由Android操作系统提供“…允许访问特定于应用程序的资源和类,以及对应用程序级操作(如启动活动、广播和接收意图等)的up调用”

      你现在可以很好地理解我为什么要用这个名字了
      @Override
          public AssetManager getAssets() {
              return mBase.getAssets();
          }
      
      Instrumentation.ActivityResult ar =
                      mInstrumentation.execStartActivity(
                          this, mMainThread.getApplicationThread(), mToken, this,
                          intent, requestCode);
      
      public class AppContext extends Application {
      
          private static Context context;
      
          public void onCreate(){
              super.onCreate();
              AppContext.context = getApplicationContext();
          }
      
          public static Context getAppContext() {
              return AppContext.context;
          }
      }
      
      TextView tv = new TextView(this);
      
       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. */
      
      getContext()
      
      getBaseContext()
      
      getApplicationContext()
      
      this
      
      Context con = this;
      
      getApplicationContext();
      
      getBaseContext();
      
      getContext();
      
      Toast.makeText(getApplicationContext(), "hello", Toast.LENGTH_SHORT).show();
      
      <application>
          <activity> .. </activity> 
      
          <service>  .. </service>
      
          <receiver> .. </receiver>
      
          <provider> .. </provider>
      </application> 
      
      Load Resource Values,
      Layout Inflation,
      Start an Activity,
      Show a Dialog,
      Start a Service,
      Bind to a Service,
      Send a Broadcast,
      Register BroadcastReceiver.