Ver Mensaje Individual
  #6  
Viejo 17/06/13, 22:16:46
Avatar de kriogeN
kriogeN kriogeN no está en línea
Colaborador/a
Mensajes: 4,637
Compra y venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Versión de ROM: CM13 - CM 11
Tu operador: Vodafone
Mencionado: 60 comentarios
Tagged: 3 hilos
El problema está aquí:

holder.image.setImageURI(Uri.parse(rowItem.getruta img()));

Cada vez que un elemento se tiene que volver a dibujar vuelves a cargarlo desde su URI, lo que implica tenerlo que volver a descodificar y por tanto a ocupar memoria.

Soluciones hay muchas, como por ejemplo:

Guardar la relación de URI y Bitmap en un HashMap, así si ya la tienes cargada previamente no volverás a ocupar memoria. Si a esto además le añades que lo que almacenas en el HashMap sean SoftReferences o WeakReferences el sistema se encargará de liberarte la memoria cuando mejor le convenga, sin preocuparte de tener que hacerlo tú.

Otra solución es usar el Universal Image Loader:

https://github.com/nostra13/Android-...l-Image-Loader

Realmente está pensado para cargar imágenes desde Internet y cachearlas (para eso la uso yo), pero también lo puedes usar para imágenes locales. Te hará toda la gestión de la memoria ella sola. Aunque es una librería un poco compleja de "inicializar", pero una vez que la conoces y dominas es casi imprescindible para tratar con imágenes en Android.
Responder Con Cita