Seguramente alguna vez como desarrolladores mobile les habrá pasado que tuvieron que construir una aplicación que en alguna sección de la misma muestre imágenes ya sea en un listado o componente visual específico. Por este motivo en este post vamos a presentar nuestro TOP 3 de librerías utilizadas en el ambiente de desarrollo mobile Android nativo.
Para esta ocasión entonces considero importante poder exponerles características propias de cada librería con la finalidad de que cuando tengan que utilizarlas puedan tomar una decisión mas acertada para realizar una elección acorde a las necesidades del proyecto.
Comencemos a conocer las siguientes librerías! Coil (Coroutine Image loader) , Glide y Picasso
1 – Coil
Esta librería está soportada para Android Nativo y posee un background basado en Coroutines.
Tiene varios aspectos destacados como optimización de manejo de memoria y cache en disco. Para lograrlo hace un downsampling de las imágenes en memoria, reutiliza bitmaps y además tiene la habilidad de poder pausar y cancelar requests entre otras cosas.
Esta creada para ser utilizada con Kotlin por lo cual su integración con expresiones lambdas y el lenguaje es más que apropiada.
Por otra parte Coil es una librería más pequeña en cuanto a tamaño que Glide.
Es moderna ya que utiliza tecnologías de Coroutines, OkHttp, Okio, y AndroidX lifecycles.
Pros:
Cons:
2 – Glide
Esta librería es open source y por defecto utiliza un HttpUrlConnection y plugins para interactuar con OkHttp.
Esta librería tiene como objetivo principal poder hacer un scroll rápido lo mas suave posible aportando una experiencia fluída para el usuario.
Con respecto a esta librería podemos mencionar que la forma en la que trabaja es bajando la imagen desde una URL específica. Luego adapta la imagen al tamaño del ImageView que se quiere utilizar y finalmente guarda la imagen en caché pero respetando el tamaño en el cual quedó al adaptarla al ImageView. En términos generales le baja la resolución o sampling a la imagen para mejorar su posterior manejo.
Además es importante decir que en cuanto a tiempo de carga de imágenes se caracteriza por leer la URL remota quizás demorando un poco pero la ventaja es que la lectura y carga posterior de las imágenes desde caché es muy rápida.
Por otro lado una de las features interesantes para varios desarrolladores es que soporta el manejo de gifs animados, thumbnails y demás configuraciones relacionadas a este tipo de archivos.
Pros:
Cons:
3 – Picasso:
Esta librería trabaja descargando la imágen pero a la hora de guardarla en caché lo hace en el tamaño original.
Si se compara con Glide, Picasso consume un poco mas de memoria pero es mínima.
A la hora de leer la URL para consultar la imágen puede ser muy rápida pero puede tomar mas tiempo la interacción con la caché.
Una de las ventajas que tiene esta librería es que permite aplicar una imágen sobre un ImageView en una línea de código.
Picasso tiene solo una dependencia “implementation” para agregarla al archivo build.gradle.
Importante a tener en cuenta!
Pros:
Cons:
Conclusión general:
En mi opinión si la carga de imágenes no es el foco central de mi aplicación probablemente integraría Coil, ya que está preparado para ser utilizada con Kotlin y el código queda mucho mas legible y estilizado a lo que un Android developer está acostumbrado a ver. Por otra parte el manejo de efectos y animaciones sobre el imageView es realmente un lujo.
Picasso y Glide son librerías muy buenas pero si mi aplicación es muy grande y tiene muchos métodos es importante recordar que una aplicación Android tiene un límite máximo de alrededor de 65.000 métodos (salvo que se habilite multiDex) por lo que en este caso me inclinaría mas por utilizar Picasso o Coil por cuestiones ya mencionadas. Además si no necesito utilizar gifs elegiría Picasso.
Si una aplicación se caracteriza por tener como principal feature mostrar muchas imágenes y gifs, entonces en ese caso revisaría los benchmarks entre Glide y Coil ya que es muy posible que Glide ofrezca una velocidad mas notable.