Removendo o observador em destroy() Android
-
11-12-2019 - |
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?
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 ...