Solucionado (ver solução)
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.