¿Qué es el "Contexto" en Android?

En la programación de Android, ¿qué es exactamente una clase Contexto y para qué se utiliza?

He leído sobre ello en el sitio de desarrolladores, pero no soy capaz de entenderlo con claridad.

Solución

En pocas palabras:

Como su nombre indica, es el contexto del estado actual de la aplicación/objeto. Permite que los objetos recién creados entiendan lo que ha sucedido. Normalmente se llama para obtener información sobre otra parte del programa (actividad y paquete/aplicación).

Puedes obtener el contexto invocando getApplicationContext(), getContext(), getBaseContext() o this (cuando estás en una clase que extiende de Context, como las clases Application, Activity, Service e IntentService).

Usos típicos del contexto:

  • Creación de nuevos objetos: Creación de nuevas vistas, adaptadores, listeners:

     TextView tv = new TextView(getContext());
     ListAdapter adapter = new SimpleCursorAdapter(getApplicationContext(), ...);
  • Acceso a recursos comunes estándar: Servicios como LAYOUT_INFLATER_SERVICE, SharedPreferences:

     context.getSystemService(LAYOUT_INFLATER_SERVICE)
     getApplicationContext().getSharedPreferences(*nombre*, *modo*);
  • Acceso a los componentes de forma implícita: En cuanto a los proveedores de contenido, las transmisiones, la intención

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

Un Contexto es un asidero del sistema; proporciona servicios como la resolución de recursos, la obtención de acceso a bases de datos y preferencias, etc. Una aplicación Android tiene actividades. El Contexto es como un manejador del entorno en el que se está ejecutando la aplicación. El objeto activity hereda el objeto Context.

Para más información, mira en Introducción al desarrollo de Android con Android Studio - Tutorial.

Comentarios (0)

Un Contexto de Android es una Interfaz (en el sentido general, no en el sentido de Java; ¡en Java, Contexto es en realidad una clase abstracta!) que permite el acceso a los recursos específicos de la aplicación y a la clase e información sobre el entorno de la aplicación.

Si tu aplicación androide fuera una aplicación web, tu contexto sería algo similar a ServletContext (no estoy haciendo una comparación exacta aquí).

Tus actividades y servicios también extienden Context, por lo que heredan todos esos métodos para acceder a la información del entorno en el que se está ejecutando la aplicación.

Comentarios (0)