Estoy en camino con la implementación de un mecanismo de almacenamiento en caché para mi aplicación Android.SoftReference obtiene basura recogida demasiado pronto
Uso SoftReference
, como muchos ejemplos que he encontrado. El problema es que cuando me desplazo hacia arriba o hacia abajo en mi ListView
, la más de las imágenes ya está borrada. Puedo ver en LogCat que mi aplicación es basura recolectada cada vez que la aplicación carga imágenes nuevas. Eso significa que más de las imágenes no visibles en ListView
se han ido.
Por lo tanto, cada vez que pergamino a una posición anterior (en el que realmente descargado las imágenes antes) Tengo que descargar las imágenes una vez más - que son no en caché.
También he investigado este tema. According to Mark Murphy in this article, parece que hay (o era?) Un error con el SoftReference
. Algunos otros resultados indican lo mismo (o el mismo resultado); SoftReference
s están siendo retirados demasiado temprano.
¿Existe alguna solución de trabajo?
** demasiado ** temprano? si hay una necesidad de memoria, se borrará. ¿quién puede decir que es demasiado temprano? si el sistema quiere borrarlo, esto es lo que es la referencia suave. – binnyb
Correcto. Pero no hay necesidad de más memoria, ya que puedo colocar fácilmente alrededor de 50 imágenes en la memoria. Pero para evitar un error OOM, necesito usar este mecanismo de almacenamiento en caché. – Wroclai
sugiero que guardes en caché cada imagen, de esa manera, cuando se borre, no tienes que buscarla desde la web (a menos que no exista en la memoria caché) – binnyb