Geralmente, durante o desenvolvimento de um aplicativo Android, o desenvolvedor se depara com alguns contratempos de implementação. Dentre esses contratempos está a necessidade de acessar uma API em Json, transmitir uma informação de um serviço em background para uma Activity
ou carregar imagens em um ImageView
a partir de uma url, por exemplo.
Na maioria das vezes, na ansiedade de entregar o projeto, o desenvolvedor acaba optando por resolver esses problemas com gambiarras no código. Existe também aqueles que preferem implementar uma solução mais bem elaborada, o que exige um pouco mais de tempo. Isso ocorre porque os desenvolvedores esquecem de levar em consideração a existência de bibliotecas de código aberto que já implementam de maneira eficiente as soluções para diversos tipos de problema. Sendo assim, não há necessidade de “reinventar a roda”.
As três bibliotecas que serão apresentadas a seguir são apenas algumas dentre as centenas disponibilizadas pela comunidade Android para auxiliar os desenvolvedores na implementação dos seus aplicativos. Escolhi falar apenas dessas três porque, além de já tê-las usado, elas resolvem os problemas que eu considero como mais comuns na implementação de um aplicativo Android.
Picasso
Boa parte dos desenvolvedores Android já se deparou com a necessidade de ter que carregar uma imagem a partir de uma URL e apresentá-la em um ImageView
. Ao ver esse problema, a abordagem mais comum é usar uma AsyncTask
para baixar a imagem, criar uma bitmap e passar essa bitmap como parâmetro para o ImageView
. Além desse trabalho, ainda existe a necessidade de implementar um cache para que a imagem não seja carregada várias vezes durante a execução do app. Todo esse trabalho pode ser evitado através do uso da biblioteca Picasso.
A Picasso torna a implementação do carregamento de imagens e cache muito mais simples e rápido. Todo o trabalho descrito anteriormente pode ser feito em apenas uma linha de código!
Picasso.with(context).load(imageUrl).into(imageView);
No código da linha acima é possível ver que a Picasso exige como parâmetro o contexto, a URL da imagem e a ImageView
que receberá a imagem. Em resumo, a execução dessa linha executará o download assíncrono da imagem, apresentará a imagem no ImageView
e fará o cache para o exibição futura da imagem.
Retrofit
Implementar o acesso a uma API é uma das maiores “dores de cabeça” de um desenvolvedor Android. Para consumir os dados de uma API, a abordagem mais comum é criar uma AsyncTask
para acessar a URL, passar os parâmetros via cabeçalho HTTP, obter a resposta HTTP, manusear (fazer o parser) o resultado usando classes como JsonArray
e JsonObject
e atribuir os valores manualmente a um determinado objeto. Com o uso da Retrofit, todo esse processo é simplificado.
A Retrofit é uma biblioteca que implementa um cliente REST para o consumo de API. Essa biblioteca faz uso de annotations e objetos do tipo POJO (Plain Old Java Object). Ademais, além de requisições simples, a Retrofit suporta o envio, através do HTTP, de objetos de tipo complexo, lista de objetos e imagens. Abaixo está o passo a passo do uso dessa biblioteca (fiz o exemplo baseado na versão 1.9, pois ainda não testei a 2.0):
- Criar a classe da entidade que será obtida através da API com seus respectivos parâmetros. Os nomes dos parâmetros devem ser exatamente iguais aos que serão retornados no Json.
- Criar a interface que define os métodos da API.
- Criar uma
AsyncTask
e fazer a requisição onde for necessário.
Eventbus
É muito comum no desenvolvimento de um aplicativo Android, o desenvolvedor precisar enviar dados de um serviço que está rodando em background para uma Activity
. A Eventus foi construída justamente para resolver esse problema, ou seja, mediar e facilitar a comunicação entre
- Criar uma classe que representa o evento
- Criar um
BroadcastReceiver
para monitorar o evento e enviar mensagens pela Eventbus
- Declarar o
Broadcastreciever
noAndroidMainfest.xml
- Exibir os eventos em um
TextView
naActivity
Existem ainda bibliotecas que auxiliam na implementação do design do aplicativo como a Android Bootstrap e a Material Drawer, por exemplo. Caso você tenha alguma sugestão de biblioteca que deveria estar nessa lista ou tiver alguma dúvida, deixe um comentário.
Muito bom saber o que é usado na prática!
Há dois anos eu criei uma lista com links das bibliotecas usadas no Instagram para Android baseado no arquivo de licenças open-source disponível na própria app.
http://tumblr.felipe.rs/post/65692060893/libraries-that-may-be-used-by-instagram-android
Que massa, Felipe! Não sabia. Vou dar uma olhada, ver se consigo testar alguma e postar depois no blog.
Parabéns pelo novo emprego! kkkk
Perfeito!
Android é pra mim e de longe o melhor sistema operacional.
Muito completo e permite fazer muita coisa nele.
Já tive da Apple e nem de perto é tão bom quanto Android!