Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


UIL, Picasso – Las imágenes en adaptador siempre se recargan cuando se detiene el desplazamiento

Tengo ListView con el texto y la imagen grande de Internet. Mi elemento de imagen tiene anchura de ajuste y altura de wrap_content .
Intenté exhibir la imagen en fondo con UIL y Picasso . Ambos pueden funcionar, pero la imagen siempre se vuelve a cargar cuando dejo de desplazarse, y hace que ListView parpadee
Se parece a esto:

Introduzca aquí la descripción de la imagen

Usted puede ver que recarga las imágenes descargadas y almacenadas en caché cuando dejo de desplazarse (me desplazo hacia abajo y luego desplácese hacia arriba) .
¿Cómo puedo evitar que esto suceda?

  <ImageView android:id="@+id/imgFeed" android:layout_width="match_parent" android:layout_height="wrap_content" android:scaleType="centerCrop"/> // UIL options = new DisplayImageOptions.Builder() .showImageOnLoading(defaultImage) .showImageOnFail(defaultImage) .showImageForEmptyUri(defaultImage) .resetViewBeforeLoading(false) .cacheOnDisk(true).delayBeforeLoading(0) .displayer(new FadeInBitmapDisplayer(200)).cacheInMemory(true).imageScaleType(ImageScaleType.EXACTLY_STRETCHED).build(); ImageAware imageAware = new ImageViewAware(viewHolder.imgFeed, false); ImageLoader.getInstance().displayImage(item.getPhotoUrl(), imageAware, options); // Picasso Picasso.with(getContext()) .load(item.getPhotoUrl()) .placeholder(R.drawable.place_holder_big) .resize(screenWidth, 0) //set max width .into(viewHolder.imgFeed); 

Para UIL, he intentado muchas maneras en este tema, pero no funcionan para mí en absoluto.

Actualización : parece que me enfrenté con el problema de caché de memoria como esta pregunta . ¿Pero cómo puedo solucionar este problema? Mira la aplicación de Facebook, lo hicieron muy bien. Todas las imágenes tienen diferentes tamaños con ajuste de ancho, y desplazamiento muy suave sin recargar las imágenes. ¿Cómo pueden hacer eso?

  • Cargar imágenes en GridView con Universal Image Loader
  • Picasso v / s Imageloader v / s Fresco vs Glide
  • Solución local de caché de imágenes para Android: Square Picasso vs Universal Image Loader
  • Android ImageView Universal Image Loader cambia imágenes en Scroll
  • Listview recarga las imágenes ya cargadas mediante el cargador de imágenes Universal
  • 2 Solutions collect form web for “UIL, Picasso – Las imágenes en adaptador siempre se recargan cuando se detiene el desplazamiento”

    Si te estás preguntando cómo lo hizo Facebook, que en realidad lanzó su biblioteca de carga de imágenes ( https://github.com/facebook/fresco )

    ¿Es posible que está llamando a notifyDataSetChanged en el ListView subyacente en ese momento? ¿También usas hasStableIds ()?

    Para UIL puede intentar usar un WeakMemoryCache (consulte https://github.com/nostra13/Android-Universal-Image-Loader/wiki/Useful-Info ) como teóricamente te permitirá utilizar toda la memoria disponible Puede causar un montón de llamadas extra GC.

    Para el método de Picasso Taha se ve como su mejor apuesta!

    Tal vez el tamaño de la caché de memoria es pequeño y Picasso intenta cargar imágenes desde la caché del disco. Por favor, compruebe aquí para decidir el tamaño de la caché. Puede intentar aumentar el tamaño de caché de Picasso mediante:

     Picasso p = new Picasso.Builder(context) .memoryCache(new LruCache(cacheSize)) .build(); 

    Sin embargo, en mi opinión, su aplicación parece tener un feed sin fin. Lo que significa que su caché de memoria estará lleno en algún momento y tendrá que usar caché de disco. La recuperación de datos de la memoria caché del disco es más lenta en comparación con la memoria caché.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.