sexta-feira, 19 de agosto de 2016

Android - Ciclo de vida da Activity


Fala galera!

Como alguns devem saber, este ano comecei a aprender um pouco mais sobre programação de aplicativos Android. Atualmente não trabalho nessa área, então resolvi aprender por conta própria e aplicar em um app que será disponibilizado pelo Developer is Coming. Bom, vamos lá!



Activity

É a classe responsável por gerenciar a UI - User Interface (Interface com o usuário). A Classe Activity cuida da criação da tela e representa qualquer atividade que exista na interação entre usuário e aparelho/dispositivo. Para desenvolver o clássico "hello world!" no Android, você basicamente precisará de uma Classe Activity  principal - geralmente o Android Studio gera para você ao criar um novo projeto - e um arquivo xml que é responsável por adicionar os elementos a tela como botões, tabs, textview, etc.

Ciclo de vida da Activity

Quando comecei a pesquisar mais sobre desenvolvimento para Android, encontrei muitas vezes em documentações ou sites com tutorias o termo "Ciclo de vida da Activity" e, sinceramente, não me atentava muito a isso. Então, quando percebi que o código que estava desenvolvendo estava aparentemente desorganizado, a aplicação não respondia conforme eu esperava e outros problemas foram surgindo, então resolvi parar e entender melhor o ciclo de vida.

O site oficial dos desenvolvedores android, explica o ciclo de vida de uma activity da seguinte maneira:
As atividades no sistema são gerenciadas como uma pilha de atividade. Quando uma nova atividade é iniciada, é colocada no topo da pilha e se torna a atividade em execução. A atividade anterior sempre é mantida abaixo dela na pilha, e não voltará ao plano principal novamente até que a nova atividade saia.

O ciclo de vida de uma Activity é essencial para o desenvolvimento de seu app e possui os métodos necessários para uso em qualquer situação que o dispositivo esteja.
Antes de analizarmos esses métodos, é importante que possamos conhecer os quatro estados de uma Activity:

  • uma activity está ativa (active) ou em execução (running) quando está em primeiro plano;
  • uma activity está pausada (paused) quando ela perde o foco, mas ainda está visível. Pode ser eliminada pelo sistema se estiver em uma situação de extrema de baixa memória;
  • uma activity está parada (stopped) se uma outra activity a oculta. Ainda mantém as informações de estado, mas não está visível para o usuário.
  • quando uma atividade é pausada ou parada, o sistema pode 'retirar' da memória ou simplesmente matar o processo. Quando for apresentado novamente ao usuário, deve ser totalmente reinicializada ou restaurada para o estado anterior.

A seguir podemos ver um gráfico com a representação dos estados principais (quadrados coloridos) e os métodos que podem ser implementados quando existe a mudança entre um estado e outro da Activity (retangulos):

Ciclo de vida Activity - developer.android.com


Vamos detalhar um pouco os métodos apresentados no gráfico:

  • onCreate() : chamado quando a activity é criada. É o primeiro método a ser executado e é nesse método que deve ser efetuada a configuração como criar as views, instanciar os elementos (TextView, Button, etc). Sempre seguida pelo método onStart();
  • onRestart() : chamado quando a activity foi interrompida. Sempre seguida pelo método onStart();
  • onStart() : chamada quando a activity se torna visível para o usuário. Se a activity estiver em primeiro plano é seguida pelo onResume() ou será seguido por onStop() se tornar "escondido";
  • onPause() : chamada quando o sistema está prestes a iniciar uma atividade anterior. Geralmente é utilizada para efetuar commit de persistência de dados não salvos, parar animações e outras coisas que podem estar consumindo CPU. A implementação deste método deve ser rápida, porque a próxima activity não está "pronta" enquanto esta não for totalmente concluída. Seguida por onResume(), se a activity volta para a frente (principal) ou onStop() se ficar invisível para o usuário;
  • onStop() : chamado quando a activity não está mais visível para o usuário, por causa de outra activity foi retomada e está 'escondendo-a'. É seguida por onRestart() se esta activity está voltando a interagir com o usuário ou onDestroy() se esta activity está encerrando;
  • onDestroy() : a última chamada que você recebe antes de sua activity estar destruída.
Através destes métodos você consegue gerenciar as atividades da sua activity e manter um bom desempenho e qualidade de seu app. 

Caso deseje se aprofundar mais sobre o assunto - muitíssimo recomendado - acesse o site developer.android.com, lá possui todas as informações e vários exemplos para facilitar o aprendizado do conteúdo.

Até mais!

;)
Renan Rodrigues Ramos Desenvolvedor

Sou desenvolvedor, amo desenvolvimento de software, músico e apaixonado por filmes e seriados.