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?

¿Fue útil?

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...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top