2012-07-10 18 views
8

¿Puedo saber cuál es la forma correcta de saber si una actividad ha sido destruida? Actualmente, estoy usando la siguiente manera.Manera correcta de saber si una actividad ha sido destruida

private volatile boolean isOnDestroyCalled = false; 

@Override 
protected void onDestroy() { 
    super.onDestroy(); 
    isOnDestroyCalled = true; 
} 

public boolean isOnDestroyCalled() { 
    return this.isOnDestroyCalled; 
} 

¿Hay alguna otra forma mejor que la anterior?

+0

No entiendo muy bien tu problema, ¿cuándo quieres saber esto ?, ¿estás destripando la actividad o hay algo más que desencadene la destrucción? Siempre puede activar Finish(); para destruirlo Aquí hay un poco de ayuda http://developer.android.com/reference/android/app/Activity.html – najk

+2

Necesito saber esto yo mismo porque tuve una tarea asíncrona que desencadenó una devolución de llamada en la actividad, que podría haber sido destruida mientras tanto. Mi solución fue mantener una referencia a la devolución de llamada en la actividad, una referencia a la actividad en la devolución de llamada, y anular la referencia en la devolución de llamada cuando se destruía la actividad, por lo que la devolución de llamada no realiza nada si es nula. – qix

+0

@Linus La técnica más conocida hasta ahora es utilizar fragmento de instancia retenido: http://stackoverflow.com/questions/8417885/android-fragments-retaining-an-asynctask-during-screen-rotation-or-configuratio –

Respuesta

3

Eso funcionará, pero a veces el sistema operativo irá y cerrará su aplicación si está inactiva una cantidad de tiempo cuando otras aplicaciones necesitan prioridad. De hecho, sé que cuando eso suceda las variables se anularán, aunque no estoy seguro si en su caso usará el volátil que va a la memoria principal. Pero una forma de asegurarse de obtener el valor correcto es guardarlo en SharedPreferences.

+2

¡parece que no es un buen enfoque! –

Cuestiones relacionadas