Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
2
respostas

Classe helper contendo referências aos widgets não pode causar memory leak?

Posso estar enganado (aprendi Java no J2ME, muitos anos atrás), mas...

Ao guardar referências aos Widgets dentro da classe Wrapper, e ao mesmo tempo ter uma referência do Wrapper na Activity não pode causar ciclo de referência no grafo de dependencia de objetos?

Se isso acontece, não pode causar um memory leak?

Espero que não - e sendo o caso, por favor, me apontem pra documentação onde isso é elucidado. Velho é fogo...

2 respostas

Depedência ciclica acho que não, mas um incremento "ciclico" de contagem de usos.

solução!

Pelo que eu entendi da sua pergunta, você tem uma estrutura parecida com essa:

public class MinhaActivity extends Activity {
    private Helper helper;

    public void onCreate (Bundle bundle) {
        super.onCreate(bundle);
        setContentView(R.layout.layout_com_um_textView);

        this.helper = new Helper(this);
    }
}

onde a classe Helper é algo assim:

public class Helper {
    private TextView textView;

    public Helper(MinhaActivity act) {
       this.textView = (TextView) act.findViewById(R.id.id_do_textView);
    }
}

E você quer saber se esse tipo de código pode gerar uma dependência cíclica, ou um incremento cíclico nas referências causando um memory leak.

Na realidade, não há leak pois o garbage collector da VM consegue detectar esse "ciclo" e, caso ninguém aponte para esse ciclo, ela remove todos os elementos da memória.