Android: AlertDialog causa um vazamento de memória

A minha aplicação mostra umAlertDialog com umListView dentro. Tudo funcionou bem coque, então eu decidi testar isso para vazamentos de memória. Depois de executar o aplicativo por algum tempo, abriESTEIR e gerou o relatório Suspeitos de vazamento. A MAT encontrou vários vazamentos semelhantes:

Uma instância de "com.android.internal.app.AlertController $ RecycleListView" carregado por "<carregador de classes do sistema>" ocupa ...

Passei muito tempo procurando o motivo desse vazamento. A revisão de código não me ajudou e comecei a pesquisar no Google. Foi o que eu encontrei:

Issue 5054: AlertDialog parece causar um vazamento de memória através de uma mensagem no MessageQueue

Decidi verificar se esse bug se reproduz ou não. Para esse fim, criei um pequeno programa que consiste em duas atividades.MainActivity é um ponto de indignação. Ele contém apenas um botão que executaLeakedActivity. Este último mostra apenas umAlertDialog no seuonCreate() método. Aqui está o código:

public class MainActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        findViewById(R.id.button).setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(
                    new Intent(MainActivity.this, LeakedActivity.class));
            }
        });
    }
}

public class LeakedActivity extends Activity {
    private static final int DIALOG_LEAK = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        if (savedInstanceState == null) {
            showDialog(DIALOG_LEAK);
        }
    }

    @Override
    protected Dialog onCreateDialog(int id) {
        if (id == DIALOG_LEAK) {
            return new AlertDialog.Builder(this)
                .setTitle("Title")
                .setItems(new CharSequence[] { "1", "2" },
                    new OnClickListener() {
                        private final byte[] junk = new byte[10*1024*1024];

                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            // nothing
                        }
                    })
                .create();
        }
        return super.onCreateDialog(id);
    }
}

MAT relata vazamentos de aplicativoscom.android.internal.app.AlertController$RecycleListView toda vez que oAlertDialog é descartado e oLeakedActivity está terminado

Não consigo encontrar nenhum erro neste pequeno programa. Parece um caso muito simples de usarAlertDialog e deve funcionar bem, mas parece que não. Então, eu gostaria de saber como evitar vazamentos de memória ao usarAlertDialogs com itens. E por que esse problema ainda não foi resolvido? Desde já, obrigado

questionAnswers(4)

yourAnswerToTheQuestion