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:
- Instalación del complemento Genymotion Eclipse
- Cómo pasar una gran colección entre actividades (flujo de detalle maestro)
- Cómo obtener el tiempo y la fecha del sello de fecha y hora
- ¿Cómo conectar automáticamente un WiFi con SSID especificado?
- ¿Existe una biblioteca de lenguaje de marcado ligero para Android?
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.
- ¿Qué es exactamente lo que las 'Implementaciones no deben bloquear' en este contexto?
- ¿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?
-
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;
}
- Migración de Eclipse a Android Studio Error El contenido no está permitido en prolog
- La imagen no está creando usando el BitmapFactory.decodeByteArray
- Alternativas a java en android
- Gradle no se actualizó
- Pregunta de la sintaxis del principiante de Android / java
- Cómo y comprensión del evento de arrastre y zoom con GLSurfaceView
- La mejor manera de administrar las dependencias de Android Gradle
- Hello-JNI para Android Studio
¿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
.
- Por qué necesitamos un objeto serializable para pasar una actividad a otra actividad en android
- ¿Cómo marcar el número con caracteres especiales con la intención de Android?