Ver Mensaje Individual
  #7  
Viejo 09/09/12, 17:49:09
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
Cita:
Originalmente Escrito por mocelet Ver Mensaje
Los Bitmap sí entran en el recolector de basura como cualquier otro objeto (si no los SoftReferences no valdrían para nada). Con el recycle se libera la memoria de los datos gráficos, pero no el objeto en sí, que ese se elimina con el ciclo natural de recolección de basura.

Desde que me he acostumbrado a hacer un recycle y poner a null los bitmaps cuando ya no me hacen falta o no se van a ver, cero problemas.
Si entran, pero tienen una prioridad tan alta que practicamente es como si no entrasen, por eso hace falta el SoftReference para que funcione bien. La única forma en la que funciona medio bien (y no siempre), es si sales de la Activity, ahí si que pierde la referencia y tiende a borrarla, pero si sales y entras en otra que también demanda Bitmaps puedes volver a tener problemas de memoria, porque los Bitmap de la anterior Activity aún no se han eliminado.

Todo esto no hablo por hablar, hablo por experiencia con una aplicación que tenía demanda de muchísimos Bitmap. La única forma en la que lo solucioné (y sin Recycles ni nada) fue con SoftReference.

En cuanto a lo de hacer Recycle y poner a NULL, funciona muy bien si puedes controlarlo. Por ejemplo, tienes una Activity que cada vez que pulsas un botón te carga un nuevo Bitmap, ahí puedes controlarlo. Pero tienes otra Activity con un ListView que uno de sus elementos en cada fila es un Bitmap (por ejemplo la imagen de perfil de Twitter), ahí es muy dificil controlarlo, y puede ser que incluso no te interese controlarlo. Si tienes 100 "tuits" seguidos del mismo tio cada vez que vas a una nueva línea tendrías que volver a cargar los datos, es mejor que el sistema lo controle.
Responder Con Cita