No bloquear la caché de archivos (BitmapLruCache) la implementación?

Estoy intentando crear una demostración simple para la funcionalidad de ImageLoader para Android Volley Framework . Constructor es el siguiente:

public ImageLoader(RequestQueue queue, ImageCache imageCache) 

El problema es con ImageCache . Su JavaDoc dice:

Interfaz simple del adaptador del escondrijo. Si se proporciona a ImageLoader, se utilizará como caché L1 antes de enviarlo a Volley. Las implementaciones no deben bloquear. Se recomienda la implementación con un LruCache.

  1. ¿Qué es exactamente lo que las 'Implementaciones no deben bloquear' en este contexto?
  2. ¿Hay un ejemplo de no-bloqueo de caché de archivos (incluso no-android, pero "puro" java) que puedo utilizar para educar a mí mismo cómo convertir mi caché de archivos existente para ser no bloqueante?
  3. Si no existe – cuáles pueden ser las implicaciones negativas de usar mi implementación existente que es (sólo la lectura del archivo):

    Byte público [] get (String filename) {

     byte[] ret = null; if (filesCache.containsKey(filename)) { FileInfo fi = filesCache.get(filename); BufferedInputStream input; String path = cacheDir + "/" + fi.getStorageFilename(); try { File file = new File(path); if (file.exists()) { input = new BufferedInputStream(new FileInputStream(file)); ret = IOUtils.toByteArray(input); input.close(); } else { KhandroidLog.e("Cannot find file " + path); } } catch (FileNotFoundException e) { filesCache.remove(filename); KhandroidLog.e("Cannot find file: " + path); } catch (IOException e) { KhandroidLog.e(e.getMessage()); } } return ret; 

    }

¿Qué es exactamente lo que las 'Implementaciones no deben bloquear' en este contexto?

En su caso, no puede hacer E / S de disco.

Se trata de una caché de nivel uno (L1), lo que significa que está diseñado para volver en cuestión de microsegundos, no milisegundos o segundos. Es por eso que defienden LruCache , que es un caché de memoria.

¿Hay un ejemplo de no-bloqueo de caché de archivos (incluso no-android, pero "puro" java) que puedo utilizar para educar a mí mismo cómo convertir mi caché de archivos existente para ser no bloqueante?

Una caché L1 no debe ser una caché de archivos.

Cuáles pueden ser las implicaciones negativas de usar mi implementación existente que es (sólo la lectura del archivo)

Una caché L1 no debe ser una caché de archivos.

Volley ya tiene una caché de archivos L2 integrada, llamada DiskBasedCache , usada para almacenar en caché las respuestas HTTP. Puede sustituir su propia implementación de Cache por DiskBasedCache si lo desea y suministrarlo cuando cree su RequestQueue .

  • ¿Cómo puedo reproducir un archivo cif encriptado con ExoPlayer?
  • Aplicación de chat para Android mediante un servidor XMPP y Google Cloud Messaging (o la nueva mensajería de Cloud de Firebase) para notificaciones por push
  • Transferencia suave de WiFi en Android
  • Android: abre o reinicia la aplicación después de hacer clic en la notificación push mediante las actividades de bandera
  • Cómo agregar otro EditText cuando haga clic y llenar otro (Android)
  • Cambio de comportamiento de SimpleDateFormat en Android Marshmallow
  • ¿Cuál es la manera más eficiente de ordenar simultáneamente tres ArrayLists en Java
  • Los gestos no funcionan cuando se utiliza DrawerLayout en la aplicación para Android
  • SMS en hebreo en Android
  • ¿Alguien puede sugerir una alternativa más rápida a este algoritmo de regex?
  • ¿Quién está agregando "\ n" en la imagen codificada en Base64 cuando la escribo en un archivo? Java
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.