Preload de imágenes múltiples con Glide

Estamos tratando de precargar las imágenes en la memoria caché para cargarlas más tarde (las imágenes se encuentran en la carpeta de recursos de la aplicación)

Lo que intentamos:

Glide.with(this) .load(pictureUri) .diskCacheStrategy(DiskCacheStrategy.ALL); Glide.with(this) .load(picture_uri) .diskCacheStrategy(DiskCacheStrategy.ALL) .preload(); 

El problema: las imágenes se almacenan en caché sólo cuando estamos tratando de cargarlas / mostrarlas: Deben cargarse en memoria antes para que parezcan más rápidas.

 Glide.with(this) .load(picture_uri) .into(imageView); 

También intentamos usar un GlideModule para aumentar el tamaño de CacheMemory:

 public class GlideModule implements com.bumptech.glide.module.GlideModule { @Override public void applyOptions(Context context, GlideBuilder builder.setMemoryCache(new LruResourceCache(100000)); } @Override public void registerComponents(Context context, Glide glide) { } } 

En el manifiesto:

  <meta-data android:name=".GlideModule" android:value="GlideModule"/> 

Nada está funcionando hasta ahora. ¿Alguna idea?


Estamos tratando de usar un invisible 1 dp imageView, pero el resultado es el mismo:

 for(Drawing drawing: getDrawingsForTab(tab)){ Glide.with(this) .load(drawing.getImage().toUri()) .dontAnimate() .diskCacheStrategy(DiskCacheStrategy.ALL) .into(mPreloadCacheIv); for(Picture picture : getPictures()){ Glide.with(this) .load(picture.getPicture().toUri()) .dontAnimate() .diskCacheStrategy(DiskCacheStrategy.ALL) .into(mPreloadCacheIv); } } 

La mejor opción es manejar el almacenamiento en caché usted mismo, le da más control y debe ser fácil ya que ya sabe qué mapas de bits se van a cargar.

Primero: Configurar un LruCache

 LruCache<String, Bitmap> memCache = new LruCache<>(size) { @Override protected int sizeOf(String key, Bitmap image) { return image.getByteCount()/1024; } }; 

Segundo: Cargue los mapas de bits en el LruCache

 Display display = getWindowManager().getDefaultDisplay(); Point size = new Point(); display.getSize(size); int width = size.x; //width of screen in pixels int height = size.y;//height of screen in pixels Glide.with(context) .load(Uri.parse("file:///android_asset/imagefile")) .asBitmap() .fitCenter() //fits given dimensions maintaining ratio .into(new SimpleTarget(width,height) { @Override public void onResourceReady(Bitmap resource, GlideAnimation glideAnimation) { memCache.put("imagefile", resource); } }); 

Tercero: Utilice los mapas de bits almacenados en caché

 Bitmap image = memCache.get("imagefile"); if (image != null) { //Bitmap exists in cache. imageView.setImageBitmap(image); } else { //Bitmap not found in cache reload it Glide.with(context) .load(Uri.parse("file:///android_asset/imagefile")) .into(imageView); } 

Utilice el siguiente código para almacenar imágenes en caché sin mostrarlas

  1. Utilizando el método downloadOnly si está buscando descargar imágenes desde la web y almacenarlas en el diskCache:

     FutureTarget<File> future = Glide.with(applicationContext) .load(yourUrl) .downloadOnly(500, 500); 
  2. Utilizando el método de preload si desea cargarlos en el caché de memoria.

     Glide.with(context) .load(url) .preload(500, 500); 

Más adelante podrá utilizar las imágenes almacenadas en caché utilizando

 Glide.with(yourFragment) .load(yourUrl) .into(yourView); 

  • ¿Por qué no es posible usar mayúsculas en los recursos de nombres en android?
  • Video streaming usando NanoHttpd, Error: java.net.SocketException: sendto failed: EPIPE (Broken pipe)
  • Voltear una imagen de mapa de bits horizontal o verticalmente
  • AndroidDebugKey Keystore fue manipulado, o la contraseña era incorrecta
  • Cómo evitar el encadenamiento de varias llamadas AsyncTask?
  • Error: Código demasiado grande
  • No se puede capturar Java (Android) Excepción con try-catch
  • En google maps V2 ... fragment.getMap () devuelve null
  • Android WebView: bloqueo tras la carga de url
  • Multiplicando un vector2 por un escalar (LibGDX)
  • Android: No se puede realizar esta operación porque se ha cerrado el grupo de conexiones
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.