Pergunta

Estou desenvolvendo para Android usando anotações do Android.Eu tenho um objeto observável singleton ao qual desejo adicionar atividade como observador.Algo como o seguinte:

@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

Minha dúvida está no método on destroy.Haverá uma situação em que o Android interromperá a atividade durante um estado parado ou pausado? sem ligando onDestroy()?Se este for o caso meu Observerable poderia estar mantendo uma referência ativa para uma atividade que não é mais usada pelo sistema, o que não é bom.Ou não é esse o caso?Se assim for, a minha presunção seria manter referências fracas a todas as minhas atividades na minha lista de observadores registados, para que possam ser automaticamente canceladas o registo.Esta é uma boa solução ou não é necessária?

Foi útil?

Solução

O sistema operacional pode encerrar seu processo sem chamar onDestroy, mas caso contrário, você pode contar com a chamada de onDestroy.Portanto, desde que seu Observable esteja no mesmo processo da atividade, você está bem.

Outras dicas

De acordo com o ciclo de vida da atividade no Documentação Android, esse caso poderá acontecer se outro aplicativo precisar ser iniciado e o sistema não tiver memória suficiente.

Editar:Bem, parece que o sistema ainda chamará esse método neste caso.Não tenho mais certeza sobre o fluxo de trabalho ...

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top