Rimozione dell'osservatore su Destroy () Android
-
11-12-2019 - |
Domanda
Sto sviluppando per Android usando annotazioni Android.Ho un oggetto osservabile Singleton per il quale voglio aggiungere attività come osservatore.Qualcosa come il seguente:
@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
.
La mia domanda è con il metodo di Destroy.Ci sarà una situazione in cui Android uccide l'attività durante uno stato interrotto o in pausa senza chiamando onDestroy()
?Se questo è il caso il mio Observerable
potrebbe mantenere un riferimento in diretta a un'attività che non è più utilizzata dal sistema, che non è buona.O non è così il caso?Se è la mia presunzione sarebbe mantenere i riferimenti deboli a tutte le mie attività nella mia lista di osservatori registrati, in modo che possano essere non registrati automaticamente.È una buona soluzione o non è necessario?
Soluzione
Il sistema operativo può uccidere il tuo processo senza chiamare OnDestroy, ma altrimenti puoi fare affidamento su OnDestroy.Quindi fornito il tuo osservabile è nello stesso processo dell'attività, stai bene.
Altri suggerimenti
Secondo il ciclo di vita dell'attività sul documentazione Android , questo casopotrebbe accadere se un'altra applicazione deve avviare e il sistema non ha abbastanza memoria.
Modifica: Beh, sembra che il sistema chiamerà comunque questo metodo in questo caso.Non sono più sicuro del flusso di lavoro ...