Ver Mensaje Individual
  #3  
Viejo 30/05/12, 20:46:14
Array

[xs_avatar]
kriogeN kriogeN no está en línea
Colaborador/a
· Votos compra/venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Tu operador: Vodafone
Para solucionar el problema puedes hacerlo de 2 formas, la primera es la que leerás en todos sitios si buscas por Internet, pero yo para resolverlo uso la 2ª opción.

1) Usar Recycle sobre todos los Bitmap cada vez que vayas a dejar de usarlos, en tu caso, en el OnDestroy. Con esto liberas la memoria que dejan los Bitmap justo al ejecutar la función, sin esperar a que el recolector de basura pase.

2) Introducir el Bitmap dentro de un SoftReference cuando lo creas, y luego al asignar el Bitmap asignas el Get del SoftReference. Con esto cuando el sistema necesite memoria lo primero que va a eliminar son los Bitmap, casi todos los problemas que he tenido yo como el que te ocurre a ti lo he solucionado así.

Para tu caso cualquiera de los 2 métodos te vale, pero la ventaja del 2º es que también vale para casos en los que no sabes cuando tienes que liberar la memoria, por ejemplo, imagina que tienes un ListView con 1000 items y que cada item es una imagen, y los vas cargando conforme scrolleas. Si usas el método 1, no sabrás cuando hacer el Recycle, así que cuando lleves scrolleados unos cuantos items te dará el error. En cambio con el método 2 conforme scrolleas irá eliminando las imagenes que tenías por encima (porque al no ser visibles el sistema piensa que ya no las necesita, y al ser SoftReferences es lo primero que elimina), y si vuelves a subir las tendrá que volver a cargar, pero por lo menos no te dará error.
Responder Con Cita
Gracias de parte de: