¿Qué es Contexto en Android?

Las aplicaciones de Android son populares desde hace mucho tiempo y están evolucionando a un mayor nivel, ya que las expectativas de los usuarios son que necesitan ver los datos que desean en una vista más fluida. Por lo tanto, los desarrolladores de Android deben conocer las terminologías importantes antes de desarrollar la aplicación. En la programación de Android, generalmente nos encontramos con una palabra contexto . Entonces, ¿qué es exactamente este contexto y por qué es tan importante? Para responder a esta pregunta, veamos primero cuál es el significado literal de contexto:  

Las circunstancias que forman el escenario de un evento, declaración o idea, y en términos de las cuales puede entenderse completamente.

Mirando esta definición nos encontramos con dos cosas: 

  • El contexto nos habla de la información circundante.
  • Es muy importante comprender el entorno que queremos comprender.

Del mismo modo, cuando hablamos del contexto de programación de Android, puede entenderse como algo que nos brinda el contexto del estado actual de nuestra aplicación. Podemos dividir el contexto y su uso en tres puntos principales: 

  • Nos permite acceder a los recursos.
  • Nos permite interactuar con otros componentes de Android mediante el envío de mensajes.
  • Le brinda información sobre el entorno de su aplicación.

En la documentación oficial de Android , el contexto se define como:  

Interfaz a la información global sobre un entorno de aplicación. Esta es una clase abstracta cuya implementación la proporciona el sistema Android. Permite el acceso a recursos y clases específicos de la aplicación, así como llamadas ascendentes para operaciones a nivel de la aplicación, como actividades de lanzamiento, intentos de transmisión y recepción, etc.

Comprender el contexto mediante un ejemplo del mundo real

Vamos a una persona a visitar un hotel. Necesita desayunar, almorzar y cenar a una hora adecuada. Además de estas cosas, también hay muchas otras cosas que quiere hacer durante el tiempo de estadía. Entonces, ¿cómo consigue estas cosas? Le pedirá a la persona del servicio de habitaciones que le traiga estas cosas. ¿Derecha? Así que aquí el,

¿Cómo funciona esto ?

1. Es el contexto del estado actual/activo de la aplicación.

Por lo general, la aplicación tiene múltiples pantallas como mostrar/consultar/agregar/eliminar pantallas (requisito general de una aplicación básica). Entonces, cuando el usuario está buscando algo, el contexto es una pantalla de consulta en este caso.

2. Se utiliza para obtener información sobre la actividad y la aplicación.

El contexto de la pantalla de consulta especifica que el usuario está en actividad de consulta y puede enviar consultas relacionadas con la aplicación.

3. Se utiliza para acceder a recursos, bases de datos, preferencias compartidas, etc.

A través de los servicios Rest, las llamadas a la API se pueden consumir en las aplicaciones de Android. Los servicios de descanso generalmente contienen datos de la base de datos y proporcionan la salida en formato JSON a la aplicación de Android. El contexto de la pantalla respectiva ayuda a obtener los datos de la base de datos y los datos compartidos entre pantallas.

4. Tanto la clase Actividad como la Aplicación amplían la clase Contexto.

En Android, el contexto es el principal concepto importante y su uso incorrecto conduce a una fuga de memoria. Actividad se refiere a una pantalla individual y Aplicación se refiere a toda la aplicación y ambos amplían la clase de contexto. 

Tipos de contexto en Android

Hay principalmente dos tipos de contexto disponibles en Android. 

  1. Contexto de aplicación y 
  2. Contexto de actividad

La vista general de la jerarquía de aplicaciones tiene el siguiente aspecto:

app hierarchy

Se puede ver en la imagen de arriba que en «Aplicación de muestra», el contexto más cercano es el contexto de la aplicación. En «Actividad1» y «Actividad2», tanto el contexto de actividad (aquí es el contexto de actividad1 para la actividad1 y el contexto de actividad2 para la actividad2) y el contexto de la aplicación. El contexto más cercano a ambos es solo su contexto de actividad.

Contexto de la aplicación

Este contexto está ligado al ciclo de vida de una aplicación . Principalmente es una instancia que es un singleton y se puede acceder a través de . Algunos casos de uso de contexto de aplicación son:

  • Si es necesario crear un objeto singleton
  • Durante la necesidad de una biblioteca en una actividad

getApplicationContext():

el «este» «getApplicationContext» a Por ejemplo, si queremos acceder a una variable a través de la aplicación de Android, uno tiene que usarla a través de .

Ejemplo:

Java

import android.app.Application;
   
public class GlobalExampleClass extends Application
{
  private String globalName;
  private String globalEmail;
       
  public String getName() 
  {
      return globalName;
  }
       
  public void setName(String aName) 
  {
      globalName = aName;    
  }
      
  public String getEmail() 
  {
      return globalEmail;
  }
       
  public void setEmail(String aEmail) 
  {
      globalEmail = aEmail;
  }
}

Dentro de la clase de actividad, establezca el nombre y el correo electrónico de GlobalExampleClass, al que se puede acceder desde otra actividad. Veamos a través de los siguientes pasos.

Java

// Activity 1
public class <your activity1> extends Activity {
  ........
  ........
  private <yourapplicationname> globarVar;
  ........
  @Override
  public void onCreate(Bundle savedInstanceState) {
    .......
    final GlobalExampleClass globalExampleVariable = (GlobalExampleClass) getApplicationContext();
      
    // In this activity set name and email and can reuse in other activities
    globalExampleVariable.setName("getApplicationContext example");
    globalExampleVariable.setEmail("xxxxxx@gmail.com");
      
    .......
}
  
// Activity 2  
public class <your activity2> extends Activity {
  ........
  ........
  private <yourapplicationname> globarVar;
  .......
  @Override
  public void onCreate(Bundle savedInstanceState) {
    .......
    final GlobalExampleClass globalExampleVariable = (GlobalExampleClass) getApplicationContext();
      
    // As in activity1, name and email is set, we can retrieve it here
    final String globalName  = globalExampleVariable.getName();
    final String globalEmail = globalExampleVariable.getEmail();
      
    .......
}

Por lo tanto, siempre que se requiera el alcance de la variable en toda la aplicación, podemos obtenerlo por medio de A continuación se muestra una lista de funcionalidades del Contexto de la aplicación.

Lista de funcionalidades de Application Context:

  • Cargar valores de recursos
  • iniciar un servicio
  • Vincular a un servicio
  • Enviar una transmisión
  • Registrar BroadcastReceiver

Contexto de actividad 

Es el contexto de actividad, lo que significa que todas y cada una de las pantallas tienen una actividad. Por ejemplo, EnquiryActivity se refiere solo a EnquiryActivity y AddActivity solo se refiere a AddActivity. Está ligado al ciclo de vida de la actividad. Se utiliza para el contexto actual. Los . 

 Algunos casos de uso de contexto de actividad son:

  • El usuario está creando un objeto cuyo ciclo de vida se adjunta a una actividad.
  • Siempre que se encuentre dentro de una actividad para operaciones relacionadas con la interfaz de usuario, como brindis, diálogo, etc.,

getContext():

Java

@Override
public void onItemClick(AdapterView<?> parent, View view, int pos, long id) {
  .... 
  // view.getContext() refers to the current activity view 
  // Here it is used to start the activity
  Intent intent = new Intent(view.getContext(), <your java classname>.class);
  intent.putExtra(pid, ID);
  view.getContext().startActivity(intent);
}

Lista de funcionalidades del Contexto de Actividad:

  • Cargar valores de recursos
  • Inflación de diseño
  • Iniciar una actividad
  • Mostrar un cuadro de diálogo
  • iniciar un servicio
  • Vincular a un servicio
  • Enviar una transmisión
  • Registrar BroadcastReceiver

De las funcionalidades de la aplicación y la actividad, podemos ver que la diferencia es que el contexto de la aplicación no está relacionado de ninguna manera con la interfaz de usuario . Debe usarse solo para iniciar un servicio o cargar valores de recursos, etc. Aparte de getApplicationContext() y getContext() , getBaseContext() o estas son las diferentes terminologías utilizadas a lo largo del desarrollo de la aplicación. Veamos con un ejemplo

getBaseContext():

es

Envoltorio ContextWrapper = new ContextWrapper(contexto);

Java

public <YourHandler>(Context ctx) {
  // if the context is instanceof ContextWrapper
  while (ctx instanceof ContextWrapper) {
    // use getBaseContext()
    final Context baseContext = ((ContextWrapper)context).getBaseContext();
    if (baseContext == null) 
    {
      break;
    }
    // And then we can assign to context and reuse that
    ctx = baseContext;
  }
  .....
}

este:

“este” argumento es de tipo “Contexto”. Para explicar este contexto, tomemos un ejemplo para mostrar un mensaje de brindis usando «esto».

Ejemplo:

Java

// Show a simple toast message, that can be done after doing some activities
// Toast.makeText(this, "Action got completed", Toast.LENGTH_SHORT).show();
import android.support.v7.app.AppCompatActivity;  
import android.os.Bundle;  
import android.widget.Toast;    
public class ExampleActivity extends AppCompatActivity {  
    
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_main_example);   
        
        // Displaying Toast with Hello Javatpoint message  
        Toast.makeText(this,"Action done",Toast.LENGTH_SHORT).show();  
    }  
}

Producción:

output

Otro ejemplo para iniciar la actividad usando “esto”:

Java

public class FirstActivity extends AppCompatActivity {
    public static final String New_Message = "Your message to go for next screen";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_first);
    }
  
    // There must be some button and on click of 
    // that below method can be invoked 
    public void sendMessageToNextScreen(View view) {
        // Here it is used with "this"
        Intent intent = new Intent(this, SecondActivity.class);  
        EditText editText = (EditText) findViewById(R.id.editText);
        String message = editText.getText().toString();
        intent.putExtra(New_Message, message);
        // Start the SecondActivity
        startActivity(intent); 
    }
}

Referencias de documentos:

Publicación traducida automáticamente

Artículo escrito por priyarajtt y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *