Descripción
Conoce la Aplicacion Picasso de Android

Para aquellos de vosotros que han estado siguiendo los últimos acontecimientos del mundo de Android puede que hayan escuchado que Square Inc. ha lanzado un proyecto de código abierto la semana anterior del Google I/O 2013. El hecho de que sea de código abierto es una forma de contribuir a la comunidad. Concretamente vamos a hablar de una de las librerías para Android, Picasso, la que utilizo para desarrollar una nueva versión de nuestra aplicación para Android y que, como desarrollador, recomiendo. 

picassoPicasso © Square Inc.

Si alguna vez has tratado de desarrollar una aplicación para Android, o saber cómo diseñar una, lo más seguro es que tenga imágenes y, sin duda, éstas las descargarás de Internet. 

Tratar con imágenes en Android es muy difícil para un principiante y, especialmente, frustrante si no tienes la suficiente experiencia en informática. Por suerte, la web oficial de Desarrolladores Android ofrece gran cantidad de información y documentación sobre este tema acompañado de proyectos de ejemplo que harán el proceso mucho más fácil. 

Si eres un desarrollador de Android a tiempo completo, estoy seguro de que has desarrollado tu propia versión de AwesomeAsyncImageView.java. ¡Todos lo hacemos!

Puesto que mi intención es que este artículo sea entendido por la mayoría de las personas que utilizan Android y, además, se interesen por algunos técnicos, vamos a empezar por algunos problemas comunes cuando se trata con imágenes. 

En primer lugar, tienes que tener en cuenta que la batería es lo que alimenta la CPU. Por tanto, mientras más lo uses, menos batería tendrás.  Algo obvio para todos. Así que, si queremos desarrollar una aplicación que muestre una lista de noticias, puede que sea más conveniente que solo muestre una imagen y el título. 

El problema ANR

anrUn diálogo ANR (Aplicación No Responde) mostrado al usuario. / © Creative Commons Attribution 2.5

Para empezar, tenemos que ponernos en contacto con el servidor para pedir algunas noticias (el formato en el que el servidor responde no importa ahora). Por ejemplo, nos pueden dar un título y una URL para la imagen. Así, solo tenemos que comenzar a descargar las imágenes una tras otra hasta que nos aparezca el terrible mensaje ANR (Aplicación No Responde). 

El motivo principal es que tu aplicación está tan ocupada descargando imágenes sin parar que no ha tenido tiempo a 'dibujarse' a sí misma en la pantalla, por lo que el Android OS piensa que la aplicación se ha colgado. Por supuesto, el usuario siempre puede pulsar la tecla de 'Esperar' y dejar que la app termine su trabajo, pero esto solo supondría una pésima experiencia de usuario (UX)

La introducción de 'threads'

La mejora de la UX de nuestra aplicación nos obligará a aprender el concepto de 'threads' (hilos o temas). Los 'threads' son solo unidades de ejecución concurrentes, lo que significa que se ejecutan al mismo tiempo y cada aplicación tiene por lo menos un hilo conductor, generalmente el hilo de interfaz de usuario (UI). Este hilo es responsable de señalar a la aplicación en la pantalla. 

Este problema se resuelve fácilmente mediante la creación de un nuevo 'thrad' que pueda descargar las imágenes en el fondo y así cuando haya terminado puede comunicar al hilo de UI que las imágenes se han descargado para que pueda mostrarlas. De esta forma se evita la aparición del problema ANR. 

El problema de la rotación de pantalla

En el momento que giramos la pantalla de nuestro dispositivo la aplicación tiene que volverse a dibujar, básicamente porque lo más seguro es que tengas un diseño opmitizado del layout y, lamentablemente, hay que descargar las imágenes otra vez. Una pérdida de energía en términos de batería que también se pueden traducir en unos cuantos kilobytes de datos de tu tráfico mensual. 

La solución de la memoria caché

Es el momento en el que te sientas familiarizado con el concepto 'caché'. Simplemente se trata de un componente de la aplicación donde se van a almacenar datos de manera que en futuras solicitudes el servidor pueda ser más rápido. Un caché puede hacer que tu aplicación utilice más memoria, por supuesto, pero la memoria es barata y los beneficios son mucho mayores que el uso de la memoria. 

Con un caché tu aplicación se comporta de la siguiente manera: el 'thread' de UI le comunica al cache que necesita cierta imagen, por ejemplo, 'nexus4.png'. El caché no tiene nada (llamado error de caché), por lo que descarga una imagen y se la da al 'thread' de UI, y de paso la mantiene en la memoria. En el momento de girar la pantalla, el subproceso de UI pide de nuevo la imagen, pero esta vez la memoria caché está preparada (llamado acierto de caché) y no tiene que descargar la imagen de nuevo. Estamos en el 2013, no deberíamos preocuparnos por los kilobytes extra de memoria si conseguimos que la aplicación sea rápida y ahorre energía

El problema 'cerra app' 

Nuestro último problema. Seguro que a más de uno le habrá pasado que al pulsar el botón 'Atrás', Android la cierra y tenemos que abrirla otra vez. Por desgracia, tendrás que descargar todo de nuevo. Tengo tu solución, pero una vez más hará que se utilice más memoria, en este caso, interna, pero no debería importarte demasiado porque el espacio en el disco es muy barato. En vez de usar únicamente memoria caché, también se puede almacenar caché en el disco. Tu aplicación se comportará como antes, pero esta vez, después de dar la imagen que el 'thread' de UI haya solicitado, la misma se almacenará en el disco. Así, si la aplicación se cierra inesperadamente no necesitamos descargar la imagen de nuevo. 

picasso debugComo opción Debug para desarrolladores, Picasso puede mostrar la fuente de donde proviene la foto: servidor, memoria interna o RAM. / © Square Inc.

Conclusión

Para terminar, lo mejor para evitar estos problemas es una herramienta como la librería Picasso, puesto que es capaz en una sola línea de código de encargarse de esto. Así, como desarrollador podrás invertir tu tiempo en cosas más interesantes que la gestión de imágenes. 

traducido por Isabel Valencia)

Fuente: Square Inc.

Fotos
Comentarios
Ordenar por: 
Por página :
 
  • Aún no hay comentarios
Artículos Relacionados
LINE es uno de los principales competidores del popular software de mensajería instantánea estadounidense Whatsapp
11.25.2013 · De ismael
Así lo anunció el director de BBM en el blog oficial de la compañía.
10.21.2013 · De Alfredo
El sistema operativo Android es uno de los más versátiles que existen en la actualidad para todo tipo de dispositivos, ya sean tabletas, teléfonos celulares, reproductores de blue Ray, o televisores inteligentes.
10.21.2013 · De wenalo
Los actuales teléfonos inteligentes, o smartphones, nos permiten realizar un sinfín de actividades además de hacer llamadas y mandar mensajes de texto.
10.15.2013 · De wenalo
BlackBerry firmó la carta de acuerdo con Fairfax, que ya controla el 10 por ciento de la compañía canadiense.
09.23.2013 · De Guillermo
Autor
ismael
Feliz Navidad y Prospero año nuevo 2014 les deseo con todo mi corazón
06.19.2013 23:45 (06.19.2013)
935 Vista(s)
0 Suscriptor(es)
Calificación
0 votos
Recomiendalo