Eliminando el observador en destroy() android
-
11-12-2019 - |
Pregunta
Estoy desarrollando para Android usando anotaciones de Android.Tengo un objeto observable único al que quiero agregar actividad como observador.Algo como lo siguiente:
@EActivity(R.layout.myActivity)
public class MyActivity extends SherlockActivity implements Observer {
@Bean //has singleton scope
protected Observerable o;
@Override
public void onCreate() {
o.registerObserver(this);
}
@Override
public void onDestroy() {
o.unregisterObserver(this);
}
//more code
Mi pregunta radica en el método de destrucción.¿Habrá una situación en la que Android detenga la actividad durante un estado detenido o en pausa? sin vocación onDestroy()
?Si este es el caso mi Observerable
podría estar manteniendo una referencia en vivo a una actividad que ya no es utilizada por el sistema, lo cual no es bueno.¿O no es este el caso?Si es así, mi presunción sería mantener referencias débiles a todas mis actividades en mi lista de observadores registrados, para que puedan darse de baja automáticamente.¿Es esta una buena solución o no es necesaria?
Solución
El sistema operativo puede finalizar su proceso sin llamar a onDestroy, pero de lo contrario puede confiar en que se llame a onDestroy.Entonces, siempre que su Observable esté en el mismo proceso que la actividad, está bien.
Otros consejos
Según el ciclo de vida de la actividad en el documentación de Android, este caso podría ocurrir si se tiene que iniciar otra aplicación y el sistema no tiene suficiente memoria.
Editar:Bueno, parece que el sistema seguirá llamando a este método en este caso.Ya no estoy muy seguro del flujo de trabajo...