android caching android-volley universal-image-loader

Carga de imágenes de Android-Volley vs Picasso



caching universal-image-loader (6)

Fuera de la caja Volley no incluye su propia implementación de caché de disco. Debe tomar una DiskLruCache (o una memoria caché / disco híbrido si lo prefiere) y hacer que implemente la interfaz de Volley ImageCache.

Esta publicación de blog resume cómo implementar un caché basado en disco con Volley para cargar imágenes: http://blogs.captechconsulting.com/blog/raymond-robinson/google-io-2013-volley-image-cache-tutorial .

Estoy buscando una solución de carga / almacenamiento en caché de imagen de código abierto.

Estoy buscando a:

Volley de Google ,

Square''s Picasso

Universal Image Loader

Quiero ser capaz de manejar cargas de imagen asíncronas desde el disco y la red, sin embargo, no estoy seguro de si la carga de voley de Google se carga desde el disco.

¿Volley permite la carga de recursos desde el disco?

Un ejemplo de lo que me gustaría hacer está disponible con AQuery.


He recogido poca información importante de http://blog.bignerdranch.com/3177-solving-the-android-image-loading-problem-volley-vs-picasso/ (la comparación entre versiones anteriores de Picasso 2.0 y Voley)

Picasso está totalmente enfocado en la carga de imágenes. Como resultado, si tiene peculiaridades en el proceso de carga de su imagen

Volley, por otro lado, está totalmente enfocado en el manejo de pequeñas solicitudes HTTP individuales. Entonces, si su manejo de solicitudes HTTP tiene algunas peculiaridades, es probable que Volley tenga un gancho para usted. Si, por otro lado, tienes una peculiaridad en el manejo de tu imagen, el único gancho real que tienes es ImageCache. No es nada, pero tampoco es mucho, pero tiene otras ventajas, como Una vez que define sus solicitudes, usarlas desde dentro de un fragmento o actividad es sencillo. Y a diferencia de los AsyncTasks paralelos

Picasso hace una sola cosa, mientras que Volley intenta resolver un problema más general.

Android no maneja bien las imágenes de alta resolución. Tengo una pequeña obsesión con el patrón de capturar OutOfMemoryError en las aplicaciones de Android. Parece una táctica ridícula, pero Volley es la única manera de manejar de manera confiable algunos escenarios de imágenes, en comparación con la escala de Picasso y el ajuste correcto de imágenes grandes. Picasso no respeta el atributo scaleType en sus ImageViews (no está seguro de que se haya solucionado en la scaleType más reciente).

Prueba Ex: descubrí que Volley detecta OutOfMemoryError mientras carga la imagen de resolución original en lugar de la versión en miniatura, y la comparación con la versión de Picasso no explota (también detecta OutOfMemoryError), pero picasso no carga las imágenes que son demasiado grandes . Volley no solo explota, sino que Volley muestra todas estas imágenes de gran tamaño.

De acuerdo con Android Hacker Koushik Dutta :

Prueba TODA la imagen de Android y las bibliotecas http

He estado probando y comparando varias de las diversas bibliotecas de carga de imágenes y solicitud de http disponibles, ya que un par de ellas se publicaron la semana pasada.

Póngase en fila:

  • AndroidAsync + UrlImageViewHelper (koush)
  • Volley (Google)
  • okhttp + Picasso (cuadrado)

Todas las respuestas de soporte en caché y condicionalmente en caché, mantienen vivo, etc.

Pensamientos:

  • Picasso tiene la API de imagen más bonita. Voy a robar su currículum API para mi futuro / material actual. Picasso también es notablemente el más lento. Especialmente en 3g vs wifi. Probablemente debido a su cliente okhttp personalizado.
  • UrlImageViewHelper + AndroidAsync es el más rápido. Jugar con estas otras dos geniales bibliotecas realmente ha resaltado que la API de la imagen está bastante anticuada, sin embargo.
  • El voleo es resbaladizo; Realmente disfruto de sus transportes de back-end conectables, y podría terminar cayendo AndroidAsync allí. La prioridad de la solicitud
    y la gestión de cancelación es excelente.

Actualizar Estas no son realmente bibliotecas de http. Solo cargadores de imágenes. pero hubo solicitudes de comparaciones en los comentarios ... Android-Universal-Image-Loader es el más popular actualmente. Altamente personalizable.

Una consulta; como jquery, pero para Android? Supongo que es bueno, si te gustan ese tipo de cosas. No use este; Craps en el hilo de la interfaz de usuario o algo así. Cargando un montón de imágenes en mi Nexus 4 en una vista de lista hizo que pareciera que estaba de vuelta en mi HTC G1 una vez más. Gran tartamudeo.

Pruebas con cachés claros:

El frío es un nuevo comienzo de la aplicación. Warm es un caché claro con conexiones http presumiblemente mantenidas vivas.

Frío / Caliente (en milisegundos, prom promedio de 10 ejecuciones, borrado de datos en cada ejecución):

  • Picasso 12142/11892
  • UrlImage 7378/4525
  • Volley 8292/7520
  • Android-Universal-Image-Loader 14484/11243
  • AQuery 11341/9637 (este parece bloquear el hilo de UI ... no lo use)

Aquí está la base del código de prueba: https://github.com/koush/AndroidNetworkBench

Conclusión: estas pruebas no son concluyentes. Acabo de probar el acceso a la red concurrente con muchas imágenes. Es cierto que hay más para probar una biblioteca que eso. Me gusta cómo Volley juega bien con el ciclo de vida de la actividad, por ejemplo. Ninguna de las otras bibliotecas hace eso.

Entonces, lo que sea que flote tu bote realmente. Yo (Koush) quiero Volley con la API de Picasso.


Si estás de acuerdo con el software más reciente / menos estable, acabo de lanzar una biblioteca de código abierto llamada Glide: https://github.com/bumptech/glide

Está diseñado para permitirte cargar eficientemente cualquier imagen que puedas obtener con InputStream. Incluye algunas implementaciones básicas de carga de archivos / http, pero también le permite conectar las suyas propias o utilizar alguna biblioteca externa (como Volley) mediante devoluciones de llamadas.

Incluye la memoria y el almacenamiento en caché de disco, así como el reciclaje de mapas de bits en dispositivos más nuevos. Todo lo que necesita hacer es implementar una interfaz para obtener un flujo de entrada para su modelo de datos (ruta / url / uri, etc.) y pasarlo junto con las transformaciones, marcadores de posición o animaciones que desee para el singleton Glide.

Feliz de hablar con usted o con cualquier persona que tenga curiosidad, lo hemos usado extensamente en Bump para interactuar con una variedad de bibliotecas.


Solo usa la biblioteca de Picasso :

Picasso.with(context).load(new File("/images/oprah_bees.gif")).into(imageView2);

Esto le permitirá cargar file específicos desde SD y también puede pasar el imageView donde puede configurar esta imagen.

Para leer más funciones en la Biblioteca Picasso


Volly también se puede usar para cargar archivos en el disco.

Utilizar:

networkImageView.setImageUrl(Uri.fromFile(newFile(filename)).toString(),mImageFetcher);


volley ''Solicitar trato de clase con todas las solicitudes de red. No puedo encontrar ningún recurso de carga de clase desde el disco ...