Contexto en una aplicación de Android

Contexto en una aplicación de Android


¿Qué es el contexto?


Como su nombre lo indica, este es el contexto del estado actual de la aplicación u objeto. Esto permite que los objetos recién creados entiendan lo que está sucediendo. Usualmente lo llaman para obtener información sobre otra parte del programa.


Además, Context es una guía del sistema, puede proporcionar recursos, acceder a bases de datos, preferencias, etc. Las aplicaciones de Android también tienen Activity . Es como explorar el entorno en el que se ejecuta su aplicación. Un objeto Activity hereda un objeto Context . Le permite acceder a recursos e información específicos sobre el entorno de la aplicación.


Context presente en casi todas partes en una aplicación de Android y es su parte más importante, por lo que debe comprender cómo usarlo correctamente.


El uso incorrecto de Context puede conducir fácilmente a pérdidas de memoria en la aplicación de Android.


Hay muchos tipos diferentes de contextos, así que descubramos qué es cada uno de ellos, cómo y cuándo usarlos correctamente.


Contexto de la aplicación


Esta es una instancia singleton (la única en toda la aplicación), y se puede acceder a ella a través de la función getApplicationContext() . Este contexto está vinculado al ciclo de vida de la aplicación. Se puede usar un contexto de aplicación donde necesita un contexto cuyo ciclo de vida no está relacionado con el contexto actual, o cuando necesita pasar el contexto fuera de la Activity .


Por ejemplo, si necesita crear un objeto singleton para su aplicación, y este objeto necesita algo de contexto, use siempre el contexto de la aplicación.


Si pasa un contexto de Activity en este caso, esto provocará una pérdida de memoria, ya que un objeto singleton mantendrá una referencia a la Activity y el recolector de basura no lo destruirá cuando sea necesario.


En el caso de que necesite inicializar una biblioteca en una Activity , pase siempre el contexto de la aplicación, no el contexto de la Activity .


Por lo tanto, getApplicationContext() debe usarse cuando se sabe que necesita un contexto para algo que pueda vivir más tiempo que cualquier otro contexto que tenga a su disposición.


Contexto de actividad


Este contexto es accesible en Activity y se adjunta a su ciclo de vida. Un contexto de Activity debe usarse cuando pasa un contexto dentro de una Activity o necesita un contexto cuyo ciclo de vida está vinculado al contexto actual.


getContext () en ContentProvider


Este contexto es el contexto de la aplicación y puede usarse de manera similar al contexto de la aplicación. Se puede acceder a través del método getContext() .


¿Cuándo no se puede usar getApplicationContext ()?


  • Este no es un contexto completo que respalde todo lo que una Activity puede hacer. Algunas cosas que intente hacer con este contexto fallarán, principalmente relacionadas con la GUI.
  • Se pueden producir pérdidas de memoria si el contexto de getApplicationContext() mantiene en algún objeto que no borra más adelante. Si el contexto de la Activity se mantiene en algún lugar, tan pronto como el Recolector de basura destruya la Activity , todo lo demás también se destruirá. El objeto Application permanece durante la vida de su proceso.

Regla de oro


En la mayoría de los casos, use un contexto accesible directamente desde el componente en el que está trabajando actualmente. Puede almacenar un enlace de forma segura si no va más allá del ciclo de vida de este componente. Tan pronto como necesite guardar el enlace al contexto en un objeto que se encuentre fuera de su Activity u otro componente, incluso temporalmente, use el enlace al contexto de la aplicación.

Source: https://habr.com/ru/post/es421115/


All Articles