Estoy utilizando el código siguiente para quita del niño en cada ViewGroup:Android: No se puede destruir la actividad
protected void onDestroy() {
super.onDestroy();
this.liberarMemoria();
}
public void liberarMemoria(){
imagenes.recycleBitmaps();
this.unbindDrawables(findViewById(R.id.RelativeLayout1));
System.gc();
}
private void unbindDrawables(View view) {
if (view.getBackground() != null) {
view.getBackground().setCallback(null);
}
if (view instanceof ViewGroup) {
for (int i = 0; i < ((ViewGroup) view).getChildCount(); i++) {
unbindDrawables(((ViewGroup) view).getChildAt(i));
}
((ViewGroup) view).removeAllViews();
}
}
donde la vista: R.id.RelativeLayout1 es un ListView.
Pero hacer esto tengo es una excepción:
E/AndroidRuntime(582): java.lang.RuntimeException: Unable to destroy activity {...}: java.lang.UnsupportedOperationException: removeAllViews() is not supported in AdapterView
¿Cómo puedo solucionar esto?
¿Alguna idea de por qué AddapterView no es compatible con esta operación? No pude encontrar nada en la referencia oficial de AdapterView al respecto. – r1k0
@ r1k0, Sí, eso es porque AdapterView administra internamente a sus hijos. No puede agregarlos/eliminarlos ya que esto podría romper su estado interno. – inazaruk