studio getcontext getbasecontext getapplicationcontext from example current context activity android android-context

getcontext - getbasecontext android



Android: Referencias a un contexto y fugas de memoria. (2)

El alcance de HelperClass solo está dentro de su función onCreate, por lo que una vez que se ejecuta onCreate, su objeto "h" ya no es necesario y está sujeto a la recolección de basura.

Sería una historia diferente si "h" fuera un miembro estático, esa sería una gran manera de perder memoria.

He leído que es un error y una fuente de pérdidas de memoria en la aplicación de Android para mantener las referencias duraderas a un Contexto.

Pero no entiendo si está bien crear una clase que se vea así:

public class HelperClass { private Context context; public HelperClass(Context context) { this.context = context; } public void myHelperMethod() { // uses this.context } }

Y llámalo desde una Actividad:

public class MyActivity extends Activity { public void onCreate(Bundle savedInstanceState) { HelperClass h = new HelperClass(this); h.myHelperMethod(); } ... }


Esto está bien y no causará una pérdida de memoria.

Tan pronto como onCreate termine de ejecutarse, h estará fuera del alcance y será elegible para la recolección de basura. Si h fuera estático, entonces tendrías problemas. Solo cuando la referencia al contexto sobreviva al ciclo de vida del propio contexto se producirá una pérdida de memoria. Algunos consejos útiles: