2010-02-12 8 views
7

En mi aplicación he recibido un objeto no activo cuyo rol es ser una clase manager. muchas veces necesito pasar "actividad de origen" a métodos como parámetro a esa clase de administrador para realizar algunas operaciones en esa actividad.Pasando la actividad al objeto no activo correctamente

por ejemplo supongamos que tenemos MyActivity que tiene que hacer un brindis. así que tengo esta clase gestor de llamada MyManager, y tengo este método en ella

raiseToast(Activity sourceActivity) { 

    Toast.makeText(sourceActivity, demo, Toast.LENGTH_LONG).show(); 
} 

y de la clase Myactivity que llamar a ese método de esta manera:

MyManager manager=new MyManager(); 
manager.raiseToast(MyActivity.this); 

funciona bien.

lo que estoy preguntando aquí, ¿es esta una forma adecuada de pasar un parámetro Actividad como un objeto no activo? Tengo una pérdida de memoria en el dispositivo real (no en el emulador), me pregunto si esto también podría causar alguna razón para eso.

Gracias Idan.

Respuesta

3

Puede intentar pasar el contexto de la aplicación que es getApplicationContext() en la actividad. ¿Por qué tiene este objeto MyManager? Puedes simplemente hacer brindis por la actividad sin tenerlo en una clase separada. Mueva su método raiseToast() al cuerpo de la actividad y simplemente llámelo.

EDIT: por favor, lea http://android-developers.blogspot.com/2009/01/avoiding-memory-leaks.html

+1

Sí por supuesto, en este caso, más o menos tonto, i jus dio un ejemplo, cuando tengo que pasar a la actividad actual de un objeto no-actividad, en este caso es realmente inútil, pero en otros casos, es posible que deba separar la lógica interna de la GUI (MVC) , de modo que ¿cómo lo haría de esta manera de getApplicationContext()? Gracias – rayman

+0

¿Cómo debo enviar el parámetro de la actividad de llamada, y cómo debo establecer el parámetro en la clase de administrador? Gracias. – rayman

+0

getApplicationContext() es el método de contexto. Entonces puede reemplazar manager.raitetoast (MyActivity.this); con manager.raitetoast (getApplicationContext()); –

Cuestiones relacionadas