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 .

  • "El plug-in org.eclipse.jdt.ui no pudo cargar la clase org.eclipse.jdt.internal.ui.packageview.PackageExplorerPart." Problema en adt (v22.6.2)
  • ¿Cómo hacer lo contrario de atributo de preferencia android: dependencia?
  • No puede utilizar el método "getString (int resId)" en FragmentPagerAdapter
  • HTTPS GET (SSL) con Android y certificado de servidor auto-firmado
  • ¿Puedo acceder a los datos almacenados en AsyncStorage de React Native desde la capa java?
  • Cómo llamar a Mono para la clase de Android desde la aplicación de Android?
  • ¿Cómo pasar el contexto de la aplicación (Android) a una clase Java?
  • Llamar al método MainActivity de otras clases (que amplían el receptor de difusión)
  • ¿Puede un Servicio de Android tener permisos múltiples?
  • 'Private static final' miembro de la clase de prueba de unidad de Android cambia el valor a null
  • No se puede escribir en el archivo en el emulador de Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.