Quando considerar o uso de API em projetos Android?

Notebook e xícara de café sobre a mesa

No artigo onde criei a App Ceep, desenvolvi uma lista de notas com a API RecyclerView, entretanto, atualmente as notas estão hardcoded, ou seja, de forma estática.

Esse tipo de solução, além de ser limitado, faz com que a nossa App não tenha evolução, pois não temos a possibilidade de criar, por exemplo, um CRUD no qual permite tanto criar, listar, alterar e remover nossas notas.

Persistindo as informações dentro da aplicação

Pensando em possibilitar esse tipo de característica, uma das alternativas bem válida é criar um banco de dados interno utilizando o SQLite que vem por padrão no Android.

Porém, por mais que esse tipo de solução nos ajude em diversos cenários, também existem casos problemáticos, tais como:

  • Limpeza de dados da App: quando o usuário limpa os dados da App, as informações persistidas no SQLite são perdidas também.
  • Desinstalação da App: ao desinstalar uma App, o usuário apaga todos os dados que ele tinha no SQLite da App.
  • Formatação do celular: ao formatar o celular, tudo que o usuário tinha de informação também é perdido, inclusive o SQLite.
  • Perda do celular: seja lá qual for o motivo, se o usuário perder o celular, não conseguirá obter suas informações de volta.
Claro, considerando que a opção de auto backup das informações não esteja ativada, ou também, não seja possível.

Pensando justamente em evitar todas essas situações que são bem comuns no dia a dia do usuário, uma alternativa bem viável é utilizar um serviço online que possibilite o mesmo comportamento de persistência assim como temos no SQLite.

Entendendo a utilização de API

Dentre as possibilidades atuais do mercado, uma bem comum é justamente a utilização de um Web Service que funciona como uma API (muito comum pela implementação da arquitetura REST).

De maneira geral, esse tipo de solução nos permite realizar operações de CRUD de forma online, ou seja, mantendo as informações dentro de um servidor ao invés de só deixar dentro da App:

App Android consumindo API

Em outras palavras, temos a capacidade de realizar as mesmas operações que conhecemos no SQLite, porém, sem precisar se preocupar como que são feitas as operações internamente.

Sendo mais objetivo: Delegamos toda a responsabilidade para o servidor que vai manter a API.

Por mais que a proposta pareça boa, quando conhecemos novas soluções entramos na seguinte situação:

“Como tudo isso funciona na prática?”

A princípio é difícil de pensar em como esse tipo de solução pode nos ajudar no dia a dia, certo? Portanto, vamos entender mais ou menos como funciona o fluxo nesse tipo de ambiente:

Fluxo comum quando utilizamos API

Quando consumimos uma API, todas as operações que fazíamos apenas com o SQLite acabam indo para a API também, a única diferença é que fazemos isso por meio de um protocolo de comunicação comum entre a App e a API, como por exemplo, o protocolo HTTP.

“Bacana, analisando por cima, parece que temos o mesmo comportamento quando criamos um banco de dados interno, mas agora temos mais uma preocupação… Então quais são os benefícios que temos em relação ao SQLite?”

Vantagens e desvantagens ao utilizar uma API

Quando utilizamos um API para lidar com os nossos dados, temos os seguintes benefícios:

  • Segurança contra casos do dia a dia: quando os dados estão em uma API, o usuário não é afetado pelas situações problemáticas quando os dados são salvos apenas no celular, ou seja, por mais que ele perca o celular (o caso mais grave de todos) as informações ainda estarão no servidor.
  • Flexibilidade: por mais que a nossa intenção atual é integrar a nossa App Android com a API, ao adotar esse tipo de solução, temos a capacidade de criar outras aplicações destinadas a outras plataformas como iOS ou Web App e manter os mesmos dados que foram salvos na App Android como também nas outras aplicações.
  • Possibilidade de criar Apps totalmente online: com esse tipo de solução é possível criar Apps que funciona totalmente online (Algo que não recomendo), ou seja, se o funcionamento offline não é desejado, o uso de uma API é praticamente obrigatório.
“Mas então só existes benefícios ao utilizar esse tipo de solução?”

Além das vantagens mencionadas, esse tipo de solução apresenta algumas desvantagens também:

  • Aumento de complexidade: como é de se esperar, quando adotamos esse tipo de solução, temos que aumentar o escopo do projeto que antes só funcionava em modo offline, ou seja, o conhecimento mínimo de como lidamos com comunicação Web é necessário, como por exemplo, se for usar o protocolo HTTP, faz todo o sentido conhecer o mínimo desse protocolo e suas regras.
  • Mais preocupações: por mais que a intenção seja uma melhoria na experiência do usuário, isso também tem custo, pois agora é preciso considerar que a sua App vai ter que lidar com situações excepcionais, como por exemplo, falha durante a comunicação com a API causadas por falta de internet ou até mesmo falha na implementação, ou seja, é importante saber lidar com situações como essas.
  • Se optar por funcionar com a App apenas online: caso opte em deixar a App funcionando apenas no modo online, ou seja, quando consegue conexão com a API, significa que quando o usuário não tiver internet, ele não vai conseguir usar a sua App.

Vale ou não apenas utilizar uma API?

Existem outros pontos pelos quais podemos refletir sobre usar ou não uma API dentro de um projeto Android… Entretanto, a maioria dos projetos (se não for quase todos) atuais adotam o uso de API dentro de toda arquitetura do projeto, como por exemplo, WhatsApp, Facebook, Apps da Google…

Em outras palavras, por mais que exista uma certa complexidade e novos problemas que precisamos lidar, se você pretende atuar como desenvolvedor Android profissional, com toda a certeza, aprender a lidar API é essencial para que consiga atuar nos projetos atuais.

Para saber mais

Caso queira saber como é possível implementar um Web Service base para começar a desenvolver a sua API, neste artigo descrevo passo a passo como é possível utilizando o Spring Boot.

Conclusão

Vimos que é muito comum criarmos Apps que a princípio funcionam em apenas em modo offline, porém, vimos que nesse tipo solução, temos alguns problemas que comprometem as informações dos usuários e, para contornar essa situação, é muito comum utilizarmos APIs que permitem o envio e busca de dados no modo online.

Também entendemos que além de benefícios, temos alguns pontos problemáticos ao implementarmos APIs, como por exemplo, a complexidade dentro do projeto, compreensão de como é feita a comunicação entre as APIs e nossas Apps.

Entretanto, vimos que por mais que tenham algumas barreiras, faz todo o sentido a adoção para esse tipo de solução, pois, além de melhorar a experiência do usuário de modo geral, é muito comum que a maioria dos projetos (se não todos) façam uso deste tipo de solução.

E aí, o que achou sobre a utilização de API dentro de um projeto Android? Aproveite e deixe o seu comentário sobre sua experiência ou suas dúvidas sobre o assunto 😄

Like what you read? Give Alex Felipe a round of applause.

From a quick cheer to a standing ovation, clap to show how much you enjoyed this story.