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?

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top