wake-up-neo.net

¿Qué es 'Context' en Android?

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

Lo leí en el sitio desarrollador , pero no puedo entenderlo claramente.

1760
Brigadier

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 estado pasando. Normalmente, lo llama para obtener información sobre otra parte de su programa (actividad y paquete/aplicación).

Puede obtener el contexto invocando getApplicationContext(), getContext(), getBaseContext() o this (cuando se encuentra en una clase que se extiende desde Context, como las clases Application, Activity, Service e IntentService).

Usos típicos del contexto:

  • Crear nuevos objetos : Crear nuevas vistas, adaptadores, oyentes:

    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(*name*, *mode*);
    
  • Acceso implícito a los componentes : Con respecto a los proveedores de contenido, transmisiones, intención

    getApplicationContext().getContentResolver().query(uri, ...);
    
1371
Sameer Segal

Definición de contexto

  • El contexto representa datos del entorno
  • Proporciona acceso a cosas como bases de datos

Términos más simples (ejemplo 1)

  • Considere que Person-X es el CEO de una empresa de software de inicio.

  • Hay un arquitecto principal presente en la empresa, este arquitecto principal hace todo el trabajo en la empresa que implica, como base de datos, interfaz de usuario, etc.

  • Ahora el CEO contrata a un nuevo desarrollador.

  • Es el Arquitecto quien le dice a la responsabilidad de la persona recién contratada según las habilidades de la nueva persona si trabajará en la Base de datos o en la IU, etc.

Términos más simples (ejemplo 2)

  • Es como el acceso de la actividad de Android al recurso de la aplicación.

  • Es similar a cuando visitas un hotel, quieres el desayuno, el almuerzo y la cena en los horarios adecuados, ¿no?

  • Hay muchas otras cosas que te gustan durante el tiempo de estancia. ¿Cómo consigues estas cosas?

  • Le pides a la persona del servicio de habitaciones que traiga estas cosas para ti.

  • Aquí, la persona encargada del servicio de habitaciones es el contexto, considerando que usted es la única actividad y el hotel para ser su aplicación; finalmente, el desayuno, el almuerzo y la cena deben ser los recursos.


Las cosas que involucran contexto son:

  1. Cargando un recurso.
  2. Lanzar una nueva actividad.
  3. Creando vistas.
  4. obteniendo servicio del sistema.

El contexto es la clase base para Actividad , Servicio , Aplicación , etc.

Otra forma de describir esto: considere el contexto como remoto de un televisor y los canales en la televisión son recursos, servicios, uso de intenciones, etc. - Aquí, el remoto actúa como un acceso para obtener acceso a todos los recursos diferentes en primer plano.

  • Entonces, Remote tiene acceso a canales como recursos, servicios, uso de intenciones, etc ....

  • Del mismo modo ... Quien tenga acceso a remoto, naturalmente tendrá acceso a todas las cosas, como recursos, servicios, uso de intenciones, etc.


Diferentes métodos por los cuales puedes obtener contexto

  • getApplicationContext()
  • getContext()
  • getBaseContext()
  • o this (cuando está en la clase de actividad)

Ejemplo:

TextView TV=new TextView(this);

this -> se refiere al contexto de la actividad actual.

460
Devrath

Fuente


El tema del contexto en Android parece ser confuso para muchos. La gente simplemente sabe que se necesita Contexto con bastante frecuencia para hacer cosas básicas en Android. Las personas a veces se asustan porque intentan realizar alguna operación que requiere el Contexto y no saben cómo "obtener" el Contexto correcto. Voy a intentar desmitificar la idea de contexto en Android. Un tratamiento completo del problema está más allá del alcance de esta publicación, pero intentaré dar una descripción general para que tenga una idea de qué es el contexto y cómo usarlo. Para entender qué es el contexto, echemos un vistazo al código fuente:

https://github.com/Android/platform_frameworks_base/blob/master/core/Java/Android/content/Context.Java

¿Qué es exactamente el contexto?

Bueno, la documentación en sí misma proporciona una explicación bastante sencilla: la clase de contexto es una "Interfaz con la información global sobre un entorno de aplicación".

La propia clase de contexto se declara como clase abstracta, cuya implementación es proporcionada por el sistema operativo Android. La documentación proporciona además que Context "... permite el acceso a recursos y clases específicos de la aplicación, así como llamadas de llamada para operaciones a nivel de la aplicación, como lanzar actividades, transmitir y recibir intenciones, etc.".

Puedes entender muy bien, ahora, por qué el nombre es Contexto. Es porque es solo eso. El Contexto proporciona el enlace o enlace, si lo hace, para una Actividad, Servicio o cualquier otro componente, vinculándolo así al sistema, permitiendo el acceso al entorno de aplicación global. En otras palabras: el contexto proporciona la respuesta a la pregunta de los componentes de "¿dónde diablos estoy en relación con la aplicación en general y cómo accedo/me comunico con el resto de la aplicación?" Si todo esto parece un poco confuso, Mire los métodos expuestos por la clase de Contexto que proporciona algunas pistas adicionales sobre su verdadera naturaleza.

Aquí hay una muestra aleatoria de esos métodos:

  1. getAssets()
  2. getResources()
  3. getPackageManager()
  4. getString()
  5. getSharedPrefsFile()

¿Qué tienen en común todos estos métodos? Todos permiten que quien tenga acceso al Contexto pueda acceder a los recursos de toda la aplicación.

En otras palabras, el contexto enlaza el componente que tiene una referencia al resto del entorno de la aplicación. Los activos (por ejemplo, la carpeta 'pensar'/activos en su proyecto), están disponibles en toda la aplicación, siempre que una Actividad, Servicio o lo que sea que sepa cómo acceder a esos recursos. Lo mismo ocurre con getResources(), que permite hacer cosas como getResources().getColor(), que lo conectará con el recurso colors.xml (no importa que aapt permita el acceso a los recursos a través del código Java, que es un problema aparte).

El resultado es que Context es lo que permite el acceso a los recursos del sistema y lo que enlaza los componentes a la "aplicación mayor". Veamos las subclases de Context, las clases que proporcionan la implementación de la clase abstracta Context. La clase más obvia es la Activity class. Activity hereda de ContextThemeWrapper, que hereda de ContextWrapper, que hereda de Context en sí. Esas clases son útiles para entender las cosas a un nivel más profundo, pero por ahora es suficiente saber que ContextThemeWrapper y ContextWrapper son bastante más de lo que suenan como. Implementan los elementos abstractos de la propia clase de Context "ajustando" un contexto (el contexto real) y delegando esas funciones a ese contexto. Un ejemplo es útil: en la clase ContextWrapper, el método abstracto getAssets de la clase Context Se implementa de la siguiente manera:

@Override
    public AssetManager getAssets() {
        return mBase.getAssets();
    }

mBase es simplemente un campo establecido por el constructor en un contexto específico. Por lo tanto, se envuelve un contexto y la ContextWrapper delega su implementación del método getAssets a ese contexto. Volvamos a examinar la clase Activity que finalmente hereda de Context para ver cómo funciona todo esto.

Probablemente sepa qué es una Actividad, pero para revisar, es básicamente 'una cosa que el usuario puede hacer. Se encarga de proporcionar una ventana en la que colocar la IU con la que el usuario interactúa '. Los desarrolladores familiarizados con otras API e incluso los que no lo son pueden pensar en eso de forma vernácula como una "pantalla". Eso es técnicamente inexacto, pero no importa para nuestros propósitos. Entonces, ¿cómo interactúan Activity y Context y qué sucede exactamente en su relación de herencia?

De nuevo, es útil ver ejemplos específicos. Todos sabemos cómo lanzar Actividades. Siempre que tenga "el contexto" desde el cual está iniciando la Actividad, simplemente llame a startActivity(intent), donde la Intención describe el contexto desde el cual está comenzando una Actividad y la Actividad que le gustaría comenzar. Esta es la startActivity(this, SomeOtherActivity.class) familiar.

¿Y qué es this? this es su actividad porque la clase Activity hereda de Context. La información completa es así: cuando llamas startActivity, en última instancia, la clase Activity ejecuta algo como esto:

Instrumentation.ActivityResult ar =
                mInstrumentation.execStartActivity(
                    this, mMainThread.getApplicationThread(), mToken, this,
                    intent, requestCode);

Por lo tanto, utiliza la execStartActivity de la clase Instrumentation (en realidad, de una clase interna en Instrumentation llamada ActivityResult).

En este punto, estamos empezando a echar un vistazo a los aspectos internos del sistema.

Aquí es donde el sistema operativo realmente maneja todo. Entonces, ¿cómo la instrumentación inicia la actividad exactamente? Bueno, el parámetro this en el método execStartActivity anterior es su actividad, es decir, el contexto, y la execStartActivity hace uso de este contexto.

Una visión general de 30,000 es esto: la clase de Instrumentación mantiene un registro de una lista de Actividades que está monitoreando para que funcione. Esta lista se utiliza para coordinar todas las actividades y asegurarse de que todo funcione correctamente en la gestión del flujo de actividades.

Hay algunas operaciones en las que no he examinado por completo cuáles son las cuestiones relacionadas con el hilo y el proceso. En última instancia, la ActivityResult usa una operación nativa - ActivityManagerNative.getDefault().startActivity() que usa la Context que pasaste cuando llamaste startActivity. El contexto que ha pasado se utiliza para ayudar en la "resolución de intenciones" si es necesario. La resolución de intención es el proceso mediante el cual el sistema puede determinar el objetivo de la intención si no se proporciona. (Echa un vistazo a la guía aquí para más detalles).

Y para que Android haga esto, necesita acceso a la información que proporciona Context. Específicamente, el sistema necesita acceder a una ContentResolver para que pueda "determinar el tipo MIME de los datos de la intención". Todo esto acerca de cómo startActivity hace uso del contexto fue un poco complicado y no entiendo completamente los aspectos internos. El punto principal fue simplemente para ilustrar cómo se debe acceder a los recursos de toda la aplicación para realizar muchas de las operaciones que son esenciales para una aplicación. Context es lo que proporciona acceso a estos recursos. Un ejemplo más simple podría ser Views. Todos sabemos qué crea una Vista personalizada extendiendo RelativeLayout o alguna otra clase de View, debe proporcionar un constructor que tome un Context como un argumento. Cuando crea una instancia de su Vista personalizada pasa en el contexto. ¿Por qué? Porque la Vista debe poder tener el acceso a temas, recursos y otros detalles de configuración de Ver. La configuración de visualización es en realidad un gran ejemplo. Cada contexto tiene varios parámetros (campos en las implementaciones de Context) que se configuran por el propio sistema operativo para cosas como la dimensión o densidad de la pantalla. Es fácil ver por qué esta información es importante para configurar Vistas, etc.

Una palabra final: Por alguna razón, las personas nuevas en Android (e incluso personas no tan nuevas) parecen olvidarse completamente de la programación orientada a objetos cuando se trata de Android. Por alguna razón, las personas intentan adaptar su desarrollo de Android a paradigmas preconcebidos o comportamientos aprendidos.

Android tiene su propio paradigma y un cierto patrón que en realidad es bastante consistente si abandona sus nociones preconcebidas y simplemente lee la documentación y la guía de desarrollo. Mi punto real, sin embargo, mientras que "obtener el contexto correcto" a veces puede ser complicado, la gente entra en pánico injustificadamente porque se encuentran en una situación en la que necesitan el contexto y piensan que no lo tienen. Una vez más, Java es un lenguaje orientado a objetos con un diseño de herencia.

Solo “tiene” el contexto dentro de su Actividad porque su actividad en sí misma hereda de Context. No hay magia en esto (excepto por todas las cosas que el sistema operativo hace por sí mismo para establecer varios parámetros y para "configurar" correctamente su contexto). Entonces, dejando de lado los problemas de memoria/rendimiento (por ejemplo, mantener referencias al contexto cuando no es necesario o hacerlo de una manera que tenga consecuencias negativas en la memoria, etc.), el contexto es un objeto como cualquier otro y se puede pasar por alto. al igual que cualquier POJO (Plain Old Java Object). A veces es posible que deba hacer cosas inteligentes para recuperar ese contexto, pero cualquier clase de Java regular que se extienda desde nada más que el propio Objeto puede escribirse de manera que tenga acceso al contexto; simplemente exponga un método público que toma un contexto y luego utilícelo en esa clase según sea necesario. Esto no pretendía ser un tratamiento exhaustivo en las aplicaciones internas de Context o Android, pero espero que sea útil para desmitificar un poco el contexto.

300
Sourab Sharma

Un contexto es un identificador para el sistema; proporciona servicios como resolver recursos, obtener acceso a bases de datos y preferencias, etc. Una aplicación de Android tiene actividades. El contexto es como un controlador del entorno en el que se está ejecutando actualmente la aplicación. El objeto de actividad hereda el objeto de contexto.

Para obtener más información, consulteIntroducción al desarrollo de Android con Android Studio - Tutorial.

109
angryITguy

Context es una "interfaz" a la información global sobre un entorno de aplicación. En la práctica, Context es en realidad una clase abstracta , cuya implementación es proporcionada por el sistema Android.

Permite el acceso a clases y recursos específicos de la aplicación, así como llamadas de nivel superior para operaciones a nivel de la aplicación, como actividades de lanzamiento, difusión y recepción de intentos, etc.

En la siguiente imagen, puede ver una jerarquía de clases, donde Context es la clase raíz de esta jerarquía. En particular, vale la pena enfatizar que Activity es un descendiente de Context.

Activity diagram

77
Dmytro Danylyk

¿Qué es exactamente Context?

Según la documentación de referencia de Android, es una entidad que representa diversos datos del entorno. Proporciona acceso a archivos locales, bases de datos, cargadores de clases asociados al entorno, servicios (incluidos servicios a nivel de sistema) y más. A lo largo de este libro, y en su codificación diaria con Android, verá que el contexto se transmite con frecuencia.

Del libro " Android en la práctica ", pág. 60.

Varias API de Android requieren un Context como parámetro

Si examinas las distintas API de Android, verás que muchas de ellas toman un objeto Android.content.Context como parámetro. También verás que una Actividad o un Servicio se usa generalmente como una Context. Esto funciona porque ambas clases se extienden desde Context.

63
s0ld13r

Un Android Context es una Interface (en el sentido general, no en el sentido de Java; en Java, Context es en realidad una clase abstracta!) Que permite el acceso a recursos y clases específicos de la aplicación e información sobre la aplicación ambiente.

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

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

43
naikus

Ejemplo simple para entender context en Android:

Cada jefe tiene un asistente que cuidar, para hacer todas las tareas menos importantes y que consumen más tiempo. Si se necesita un archivo o una taza de café, un asistente está en la carrera. Algunos jefes apenas saben lo que está pasando en la oficina, por lo que también les preguntan a sus asistentes sobre esto. Ellos hacen algún trabajo ellos mismos, pero para la mayoría de las otras cosas necesitan la ayuda de sus asistentes.

En este escenario,

Boss - es la aplicación de Android

Asistente - es contexto

Archivos/Taza de café - son recursos

Generalmente llamamos contexto cuando necesitamos obtener información sobre diferentes partes de nuestra aplicación como Actividades, Aplicaciones, etc.

Algunas operaciones (cosas donde se necesita el asistente) donde se involucra el contexto:

  • Cargando recursos comunes
  • Creando vistas dinamicas
  • Mostrando mensajes de Toast
  • Actividades de lanzamiento, etc.

Diferentes formas de obtener contexto:

getContext()

getBaseContext()

getApplicationContext()

this
37
Parsania Hardik
  • Context representa un identificador para obtener datos del entorno.
  • La clase Context se declara como abstracta, cuya implementación es proporcionada por el sistema operativo Android.
  • Context es como el control remoto de una TV y los canales en la televisión son recursos, servicios, etc.  enter image description here

Qué puedes hacer con eso ?

  • Cargando recurso.
  • Lanzamiento de una nueva actividad.
  • Creando vistas.
  • Obtención de servicio de sistema.

Formas de obtener contexto:

  • getApplicationContext()
  • getContext()
  • getBaseContext() enter image description here  enter image description here
23
user4813855

Solo lo pongo ahí para novatos;

Así que primero entienda el contexto de la palabra:

En inglés-lib. significa:

"Las circunstancias que conforman el escenario para un evento, declaración o idea, y en términos de los cuales se puede entender y evaluar completamente".

"Las partes de algo escrito o hablado que preceden y siguen inmediatamente una Palabra o pasaje y aclaran su significado".

Ahora toma el mismo entendimiento al mundo de la programación:

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

Puede obtener el contexto invocando getApplicationContext(), getContext(), getBaseContext() o this (cuando esté en la clase de actividad).

Para obtener Context Anywhere en la aplicación, utilice el siguiente código:

Crea una nueva clase AppContext dentro de tu aplicación de Android

public class AppContext extends Application {

    private static Context context;

    public void onCreate(){
        super.onCreate();
        AppContext.context = getApplicationContext();
    }

    public static Context getAppContext() {
        return AppContext.context;
    }
}

Ahora, cada vez que desee un contexto de aplicación en una clase sin actividad, llame a este método y tendrá un contexto de aplicación.

Espero que esto ayude ;)

16
star18bit

Piense en ello como el VM que ha silenciado el proceso en el que se ejecuta la aplicación o el servicio. El entorno siled tiene acceso a un montón de información del sistema subyacente y ciertos recursos permitidos. Necesitas ese contexto para llegar a esos servicios.

15
Erol

El contexto es una referencia al objeto actual como este. También el contexto permite el acceso a la información sobre el entorno de la aplicación.

15
devdas

La clase Android.content.Context proporciona la conexión al sistema Android y los recursos del proyecto. Es la interfaz para la información global sobre el entorno de la aplicación.

El contexto también proporciona acceso a los servicios de Android, por ejemplo, El Servicio de Localización.

Actividades y servicios extienden la clase Context.

12
Yashvir yadav

El contexto es Instancias de la clase Android.content.Context proporcionan la conexión al sistema Android que ejecuta la aplicación. Por ejemplo, puede verificar el tamaño de la pantalla del dispositivo actual a través del contexto.

También da acceso a los recursos del proyecto. Es la interfaz para la información global sobre el entorno de la aplicación.

La clase de contexto también proporciona acceso a los servicios de Android, por ejemplo, el administrador de alarmas para activar eventos basados ​​en el tiempo.

Las actividades y servicios amplían la clase de contexto. Por lo tanto, se pueden utilizar directamente para acceder al contexto.

8
chandan kumar

Context es una interfaz para la información global sobre un entorno de aplicación. Es una clase abstracta cuya implementación es proporcionada por el sistema Android.

Context permite el acceso a clases y recursos específicos de la aplicación, así como llamadas para operaciones a nivel de la aplicación como launching activities, broadcasting and receiving intents, etc.

Aquí está el ejemplo

 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. */

Para más detalles, puede visitar http://developer.Android.com/reference/Android/content/Context.html

8
IntelliJ Amiya

El contexto es el contexto del estado actual de la aplicación/objeto. Es una entidad que representa diversos datos del entorno. El contexto ayuda a la actividad actual a interactuar con el entorno externo de Android, como archivos locales, bases de datos, cargadores de clases asociados al entorno, servicios que incluyen servicios a nivel de sistema y más.

Un contexto es un identificador para el sistema. Proporciona servicios como resolver recursos, obtener acceso a bases de datos y preferencias, etc. Una aplicación de Android tiene actividades. Es como un identificador del entorno en el que se está ejecutando actualmente la aplicación. El objeto de actividad hereda el objeto de contexto.

Diferentes métodos de invocación mediante los cuales puede obtener el contexto 1. getApplicationContext (), 2. getContext (), 3. getBaseContext () 4. o esto (cuando está en la clase de actividad).

7
santoshpatmca

El contexto es básicamente para el acceso a los recursos y para obtener los detalles del entorno de la aplicación (para el contexto de la aplicación) o la actividad (para el contexto de la actividad) o cualquier otro ...

Para evitar la pérdida de memoria, debe usar el contexto de la aplicación para cada componente que necesite un objeto de contexto ... para más clic aquí

7
Jaber Shabeek

Analogía Asistente De Jefe

Tengamos una pequeña analogía antes de profundizar en la tecnicidad del contexto.

Cada jefe tiene un asistente o alguien (chico de recados) que hace cosas menos importantes y que consumen más tiempo para él. Por ejemplo, si necesitan un archivo o un café, entonces un asistente se ejecutará. El jefe no sabrá lo que sucede en segundo plano, pero el archivo o la tarea se entregarán

Asi que aqui
Boss - Aplicación de Android
Asistente - Contexto
Archivo o taza de café - Recurso

Lo que dice el sitio oficial de desarrolladores de Android acerca de Context

El contexto es su punto de acceso para recursos relacionados con la aplicación

Veamos algunos de esos recursos o tareas.

  • Lanzar una actividad.

  • Obtención de una ruta absoluta al directorio de caché específico de la aplicación en el sistema de archivos.

  • Determinar si se permite el permiso dado para un proceso particular y una ID de usuario que se ejecutan en el sistema.

  • Comprobando si se le ha concedido un permiso en particular.

Y así.
Entonces, si una aplicación de Android quiere iniciar una actividad, va directamente a Context (Access Point), y la clase Context le devuelve los recursos (Intención en este caso).

Como cualquier otra clase, la clase Context también tiene campos y métodos.
Puede explorar más sobre Context en la documentación oficial, cubre casi todo, los métodos disponibles, los campos e incluso cómo usar los campos con los métodos.

5
Rohit Singh

Una Context es lo que la mayoría de nosotros llamaríamos Aplicación . Está hecho por el sistema Android y es capaz de hacer solo lo que una aplicación puede hacer. En Tomcat, un contexto es también lo que yo llamaría una aplicación.

Hay un contexto que contiene muchas actividades, cada actividad puede tener muchas vistas.

Obviamente, algunos dirán que no encaja debido a esto o aquello y probablemente tienen razón, pero decir que un Contexto es su aplicación actual lo ayudará a comprender qué está poniendo en los parámetros del método.

5
Nicolas Zozol

Contexto significa que Android puede saber en qué actividad debo ir o actuar.

1 - Toast.makeText(context, "Enter All Details", Toast.LENGTH_SHORT).show(); utilizado en esto. Context context = ActivityName.this;

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

en este contexto significa desde qué actividad quieres ir a otra actividad. context o ActivityName.this es más rápido que getContext y getApplicatinContext.

4
Deven Chavda

Las instancias de la clase Android.content.Context proporcionan la conexión al sistema Android que ejecuta la aplicación. Por ejemplo, puede verificar el tamaño de la pantalla del dispositivo actual a través del contexto.

También da acceso a los recursos del proyecto. Es la interfaz para la información global sobre el entorno de la aplicación.

La clase de contexto también proporciona acceso a los servicios de Android, por ejemplo, el administrador de alarmas para activar eventos basados ​​en el tiempo.

Las actividades y servicios amplían la clase de contexto. Por lo tanto, se pueden utilizar directamente para acceder al contexto.

4
Mubarak

En pocas palabras, Androids Context es un desastre que no amarás hasta que dejes de preocuparte.

Android Contexts son:

  • Dios-objetos.

  • Cosa que desea pasar por todas sus aplicaciones cuando está empezando a desarrollar para Android, pero evitará hacerlo cuando esté un poco más cerca de la programación, las pruebas y el propio Android.

    • Dependencia poco clara.

    • Fuente común de fugas de memoria.

    • PITA para pruebas.

  • Contexto real utilizado por el sistema Android para enviar permisos, recursos, preferencias, servicios, difusiones, estilos, mostrar cuadros de diálogo e inflar el diseño. Y necesita diferentes Context instancias para algunas cosas separadas (obviamente, no puede mostrar un diálogo desde una aplicación o contexto de servicio; los diseños inflados desde la aplicación y los contextos de actividad pueden diferir).

2
Pavlus

El contexto es la api específica de Android para cada aplicación-s Sandbox que proporciona acceso a datos privados de la aplicación, como recursos, bases de datos, directorios privados, preferencias, configuraciones ...

La mayoría de los datos privados son los mismos para todas las actividades/servicios/broadcastlisteners de una aplicación.

Desde Aplicación, Actividad, Servicio, implemente la interfaz de contexto, se pueden usar cuando una llamada a la API necesita un parámetro de contexto

2
k3b

Si desea conectarse Context con otras clases familiares en Android, tenga en cuenta esta estructura:

Contexto <ContextWrapper <Aplicación

Contexto <ContextWrapper <ContextThemeWrapper <Actividad

Contexto <ContextWrapper <ContextThemeWrapper <Actividad <ListActivity

Contexto <ContextWrapper <Servicio

Contexto <ContextWrapper <Servicio <IntentService

Entonces, todas esas clases son contextos a su manera. Puede emitir Servicio y ListActivity to Context si lo desea. Pero si te fijas bien, algunas de las clases también heredan el tema. En actividad o fragmento, le gustaría que la temática se aplicara a sus vistas, pero no le importa Servicio clase, por ejemplo.

Explico la diferencia en contextos aquí .

2
lomza

Context significa componente (o aplicación) en varios períodos de tiempo. Si como tanta comida entre 1 y 2 pm, mi contexto de ese tiempo se usa para acceder a todos los métodos (o recursos) que uso durante ese tiempo. El contenido es un componente (aplicación) por tiempo particular. La Context de los componentes de la aplicación sigue cambiando según el ciclo de vida subyacente de los componentes o la aplicación. Por ejemplo, dentro de onCreate () de una Activity,

getBaseContext() - da la context de la Activity que es establecida (creada) por el constructor de la actividad. getApplicationContext() - proporciona la configuración Context (creada) durante la creación de la aplicación.

Nota: <application> contiene todos los componentes de Android.

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

    <service>  .. </service>

    <receiver> .. </receiver>

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

Significa que cuando llama a getApplicationContext() desde dentro de cualquier componente, está llamando al contexto común de toda la aplicación.

Context sigue siendo modificado por el sistema en función del ciclo de vida de los componentes.

1
Uddhav Gautam