Agora que já sabemos o que são Architecture Components, está na hora de conhecer cada um deles e saber como (e quando) utilizá-los. Vamos começar pelo principal motivo da criação da biblioteca: Lifecycle.

Como já tinha dito no artigo anterior, Lifecycle é uma classe responsável por guardar informação sobre o ciclo de vida de uma activity/fragment (seus estados e eventos). Então o que são estes estados e eventos?

Eventos

Este evento representa o evento do ciclo de vida que é chamado quando acontece uma alteração no ciclo de vida (como ao voltar a abrir a activity, por exemplo).

A biblioteca Components traz algumas Annotations para utilizarmos quando queremos definir os métodos que devem ser chamados na alteração de eventos do clico de vida. Antes de vermos como estas anotações funcionam, gostaria de mostrar um exemplo simples:

@OnLifecycleEvent(ON_RESUME)
private void resumo(){}

Achei este conceito de anotações muito prático porque assim não temos de reescrever uma aplicação já existente. Basta adicionarmos anotações aos métodos já criados para que sejam chamados durantes os eventos que pretendemos.

Os eventos que podem ocorrer são:

  • ON_CREATE — quando o LifecycleOwner é criado. (Corresponde ao onCreate do Android framework)
  • ON_DESTROY — quando o LifecycleOwner é destruído. (Corresponde ao onDestroy do framework)
  • ON_PAUSE — quando o LifecycleOwner é pausado. (Corresponde ao onPause do framework)
  • ON_RESUME — quando o LifecycleOwner é resumido. (Corresponde ao onResume do framework)
  • ON_START — quando o LifecycleOwner é iniciado. (Corresponde ao onStart do framework)
  • ON_STOP — quando o LifecycleOwner é parado. (Corresponde ao onStop do framework)
  • ON_ANY — chamado quando ocorre qualquer tipo de evento no ciclo de vida do LifecycleOwner. (Qualquer um dos eventos acima mencionados)

Estados

Os estados servem simplesmente para indicar o ponto em que o nosso LifecyclerOwner se encontra no seu ciclo de vida. Sempre que ocorre um evento há também uma mudança de estado, como podemos ver no diagrama a seguir:

Dá para notar, pelo diagrama, que existem 5 estados:

  • INITIALIZED — o estado em que fica o LifecycleOwner antes do seu primeiro evento (antes de ser criado).
  • CREATED — o estado depois do ON_CREATE, mas antes do ON_START . E também depois do ON_STOP e antes do ON_DESTROY.
  • STARTED — o estado depois do ON_START, mas antes do ON_RESUME. E também depois do ON_PAUSE e antes do ON_STOP.
  • RESUMED — o estado depois do ON_RESUME.
  • DESTROYED — o estado depois do ON_DESTROY.

E a grande novidade aqui é algo que a maior parte de nós desenvolvedores já vinha pedindo há muito: um método para saber em que estado a activity/fragment está!

Sim, é isso mesmo. A classe Lifecycle possui um método para sabermos em que estado estamos. Este método chama-se getCurrentState().

Além deste método, esta classe possui também mais 2 métodos:

  • addObserver() — Este método serve para adicionar um Observer que é notificado sempre que ocorrem alterações no ciclo de vida do nosso LifecycleOwner.
  • removeObserver() — Este método serve para remover o Observer que está no nosso LifecycleOwner. É boa prática chamar este método no evento ON_DESTROY do nosso Observer, ao invés de chamá-lo no onStop() do LifecycleOwner, pois assim o nosso LifecycleOwner terá apenas o OnCreate() e nada mais.

Então como utilizar esta classe?

Para implementar a Lifecycle na nossa app, precisamos de conhecer mais um conceito: — LifecycleOwner — que é o tema do próximo artigo. Então é nesse artigo onde, depois de conhecer o LifecycleOwner, vamos finalmente à parte prática e usamos os Architecture Components.


Se você tem alguma dúvida ou sugestão, não hesite em me contactar pelo email rosariofernandes51@gmail.com ou pelo Telegram. Ficarei feliz por conversar com você. 🙂