Android: AlertDialog causa una pérdida de memoria

Mi aplicación muestra unAlertDialog con unListView dentro. Todo funcionó bien, entonces decidí probar esto para detectar pérdidas de memoria. Después de ejecutar la aplicación por un tiempo abríESTER y generó un informe de sospechosos de fugas. MAT encontró varias fugas similares:

Una instancia de "com.android.internal.app.AlertController $ RecycleListView" cargado por "<cargador de clases del sistema>" ocupa ...

Pasé mucho tiempo buscando la razón de esta filtración. La revisión del código no me ayudó y comencé a buscar en Google. Eso es lo que encontré:

Issue 5054: AlertDialog parece causar una pérdida de memoria a través de un mensaje en MessageQueue

Decidí comprobar si este error se reproduce o no. Para este propósito, creé un pequeño programa que consta de dos actividades. @MainActivity es un punto de entrada. Contiene solo un botón que ejecutaLeakedActivity. Este último solo muestra unaAlertDialog en suonCreate() método. Aquí está el 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 informa que esta aplicación tiene fugascom.android.internal.app.AlertController$RecycleListView cada vez que elAlertDialog es despedido y elLeakedActivity Está terminado

No puedo encontrar ningún error en este pequeño programa. Parece un caso muy simple de usarAlertDialog y debe funcionar bien, pero parece que no. Así que me gustaría saber cómo evitar pérdidas de memoria al usarAlertDialogs con artículos. ¿Y por qué no se ha solucionado este problema todavía? Gracias por adelantado

Respuestas a la pregunta(4)

Su respuesta a la pregunta