Entendendo o Android Jetpack-Parte 1

Victor Bruno Botelho
5 min readFeb 15, 2019

--

Anunciada no Google I / O 2018, O Jetpack é uma coleção de componentes de software Android que buscam facilitar o desenvolvimento de Apps Android. Esses componentes ajudam você a seguir as práticas recomendadas, acabando com os códigos clichê e simplificando tarefas complexas, para que você possa se concentrar na parte do código do seu interesse.

O Jetpack é composto por bibliotecas de pacotes do androidx.*, separadas das APIs da plataforma. Isso significa que ele oferece retrocompatibilidade e é atualizado com mais frequência do que a plataforma Android, garantindo que você sempre tenha acesso às versões mais recentes dos componentes do Jetpack.

Como podemos ver o Jetpack é dividido em 4 partes principais aqui daremos uma introdução sobre cada uma, tem muita coisa nova para facilitar nossa vida de desenvolvedor, em breve teremos uma serie aprendendo todos os conceitos na pratica mas primeiro precisamos entender o porque de usar o Android Jet pack.

Arquitetura

Hoje em dia é muito fácil encontrar material sobre como desenvolver Aplicativos Android mas ainda é complicado achar material sobre as melhores praticas pois não é um coisa tão simples, mas com a chegada do Jetpack tudo isso se tornará mais fácil

Data Binding

Para que conhece o findViewById() sabe como incomoda escrevê-lo a cada vez que quer referenciar algum componente do layout, alem de deixar o código visualmente sujo e extenso.

Pensando nisso foi criado o Data Binding que além de facilitar a comunicação do XML, Ela gera classes de binding que representam o seu layout em código Java, nos dando a possibilidade de trabalharmos mais facilmente possibilitando melhor manipulação em tempo de execução podendo até torná-los observáveis.

Lifecycle

O ciclo de vida de um componente é todo processo que ocorre desde sua criação até ele ser completamente destruída como por exemplo uma Activity

Entender o ciclo de vida nos ajuda muito pois na programação mobile varias coisas inesperadas podem acontecer como por exemplo o usuário receber um ligação ou ele deixar em segundo plano o aplicativo entre outros eventos, isso tudo tem que ser tratado, aumentando a responsabilidade do programador mas com uso do Lifecycle isso se torna mais fácil.

Lifecycle é uma classe que contém as informações sobre o estado do ciclo de vida de um componente (como uma Activity ou um fragmento) e permite que outros objetos observem esse estado, assim a classe que implementar pode monitorar o status do ciclo de vida do componente.

ViewModel

Quando falamos de boas praticas sabemos que não é uma boa pratica uma classe só cuidar de todo trabalho, pra que isso não aconteça existem vários padrões de projetos como MVC, MVVM entre outros.

Com o ViewModel nos fornecemos os dados para a UI, separando toda a lógica de negócios de manipulação de dados assim permitindo que seus dados sobrevivam a alterações de configuração, como rotações de tela, Multiscreen, para que você não perca seus dados.

LiveData

Se o View Model cuida de toda a logica como a View será avisada que algum dado foi modificado?

Então que surge o Live Data ele torna seus dados observáveis assim qualquer modificação ele avisa a UI, para ser atualizada fazendo com que seu App trabalhe de forma reativa, assim como faz a biblioteca RxJava, mas de forma mais simples

O LiveData também respeita o estado do ciclo de vida dos componentes (como atividades, fragmentos e serviços) e inclui a lógica de limpeza para evitar o vazamento de objetos e o consumo excessivo de memória.

Navigation

Introduzida de forma oficial no Android Studio 3.3 o navigation ajuda muito na projeção das telas de forma visual também é possível visualizar o fluxo de navegação do aplicativo de forma mais organizada.

A navegação é uma parte crucial do design do aplicativo. Com a navegação, você projeta as interações que permitem que os usuários passem, entrem e saiam das diferentes áreas de conteúdo do seu aplicativo.

Paging

Quando carregamos dados principalmente se foram usando uma fonte de dados externa, podemos ter centenas a até milhares de itens, para que não carregue coisas desnecessárias e atrapalhe a experiencia do usuário usamos a paginação onde os dados são carregados de forma gradual e o Paging nos auxilia a adaptá-los em em uma RecyclerView assim consumindo menos recursos.

WorkManager
Permite-nos especificar quando que uma determinada tarefa deve ser executada no nosso aplicativo.

Podemos escolher a hora que essa tarefa será executada como por exemplo sincronizar dados com o servidor certa hora do dia, o atualizar a localização do usuário de tempos em tempos, também é possível criar uma sequencia de tarefas a serem executadas em uma determinada ordem.

Room

A biblioteca de persistência Room fornece uma camada de abstração sobre o SQLite para permitir acesso ao banco de dados mais robusto, aproveitando todo o poder do SQLite.

A biblioteca ajuda você a criar um cache dos dados do seu aplicativo em um dispositivo que está executando seu aplicativo. Esse cache, que funciona como a única fonte de verdade do seu aplicativo, permite que os usuários visualizem uma cópia consistente das principais informações no seu aplicativo, independentemente de os usuários terem uma conexão com a Internet.

Conclusão

Para não ficar muito grande irei dividir em diversas partes e essa foi uma pequena introdução sobre os conceitos de arquitetura do Jetpack pois essa coleção de componentes é muito extensa mas com certeza veio para ajudar nossa vida de desenvolvedor nos ajudando a seguir as melhores praticas e eliminando códigos desnecessários abaixo está o link da documentação e a segunda parte dessa serie de artigos, até a próxima :)

--

--