En Android 4.1, para mí, se produce un error aparentemente extraño en nuestra aplicación. En la aplicación, un adaptador personalizado que extiende BaseAdapter se adjunta a un widget de Galería. Cuando desplazándose hacia la izquierda a derecha y viceversa rápida consigo un FC con el mensaje de excepción:"No se pueden dibujar mapas de bits reciclados" al mostrar mapas de bits en la Galería adjunta al Adaptador
java.lang.IllegalArgumentException: mapa de bits no se puede sacar reciclado
Código para la getView (..) método es el siguiente:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
if (convertView == null){
// View is not recycled. Inflate the layout.
LayoutInflater vi = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = vi.inflate(R.layout.gallery_image, parent, false);
viewHolder = new ViewHolder();
viewHolder.image = (ImageView) convertView.findViewById(R.id.gallery_image);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder)convertView.getTag();
viewHolder.image.setImageDrawable(null);
}
imageLoader.displayImage(images.get(position).getFilename(),
images.get(position).getUrlThumbnail(),
viewHolder.image,
Math.round(BitmapUtil.convertDpToPixel(400f, context)),
Math.round(BitmapUtil.convertDpToPixel(400f, context)));
return convertView;
}
Creo que debería anular la ImageView en alguna parte, pero no puedo conseguir que funcione correctamente. ImageLoader es una clase (bastante) simple para cargar las imágenes, ya sea desde LruCache, disk/sdcard o buscarlo de forma remota.
podría mostrar el código de imageLoader por favor, básicamente, parece que hay algún reciclaje de un mapa de bits en su código y está tratando de mostrar el mapa de bits después (de acuerdo con el mensaje de error), pero sin el código más difícilmente puede ser dicho. – Ridcully