Arquitetura Android. Explorando o Activity

Mobile

android_head

Geralmente encontramos diversos artigos falando sobre a programação Android iniciando-se na instalação e configuração das ferramentas necessárias para o desenvolvimento. Entretanto, antes de despejar configurações e código sobre a tela, tenho aprendido o valor de se conhecer o terreno sobre o qual se anda. Neste caso, o primeiro passo para desenvolver aplicações Android é explorar um pouco da arquitetura do Activity, peça fundamental para o nosso objetivo.

 

Visão geral

Uma Activity (atividade) pode ser entendida como uma tarefa que a aplicação pode realizar. Quando me refiro a activity, estou falando de atividades que em sua maioria interagem com o usuário, logo cada tela que o usuário está vendo é uma activity. Todo aplicativo android tem pelo menos uma activity.

Ela é basicamente um Form onde é possível adicionar componentes (Views) e programar eventos. A activity como elemento de interface, é a classe responsável por prover a aplicação a tela que fornece a iteração ao usuário, como discar um número, tirar uma foto etc. As activities são normalmente apresentadas para o usuário como telas full-screen, elas também podem ser apresentadas de outra maneira: como janelas flutuantes (através de um tema com windosIsFloating configurado) ou embutido dentro de outra atividade (usando ActivityGroup).

Uma aplicação geralmente consiste de várias activities que são ligadas entre elas. Neste caso deve existir uma activity principal, que é executada quando a aplicação é iniciada e assim pode chamar outras activities.

Uma Activity é basicamente uma classe gerenciadora de UI (Interface com o usuário). Todo aplicativo android começa por uma Activity.

 

Ciclo de vida

As Activities são gerenciadas em forma de pilha, então, quando uma nova activity é iniciada ela é colocada sobre o topo da pilha e se torna a atividade em execução, a activity anterior permanecerá sempre abaixo dela e não virá para o primeiro plano até a saída da activity em execução.

Vamos observar o plano de execução das atividades:

ciclo de vida

O diagrama acima mostra os caminhos trilhados por uma activity. Os retângulos representam chamadas a métodos que você pode implementar para realizar as operações necessárias enquanto a atividade se move entre os estados. Os retângulos coloridos com cantos arredondados são os estados que a atividade esta sujeita.

Uma Activity tem alguns estados essenciais:

  • Se a activity está em primeiro plano (no topo da pilha), ela está ativa ou em execução (active or running).
  • Se a activity não está mais em foco mas ainda está visível, por exemplo uma activity que não é executada em tela cheia, então a activity anterior está em pausa (Pause), ainda está em execução, mas pode ser finalizada pelo sistema em situações de baixa memória de execução.
  • Se a activity está totalmente escondida por outra activity, nesse caso ela está parada (Stopped). Ela ainda mantem todas as informações do estado, no entanto, não é mais visível para o usuário pois a janela está oculta, também, em alguns casos ela pode ser finalizada pelo sistema em situações de baixa memória.

Conforme podemos ver abaixo, o plano de execução se baseia nestes estados.

Activity Android

 

Sempre que outra activity é chamada, a activity anterior é parada, mas não descartada, o sistema à coloca em uma pilha para poder resgatá-la no futuro. Isso pode ser visto no uso de um sistema qualquer que tenha muitas telas, sempre que pressionarmos  a tecla BACK vamos voltar para a tela anterior até o fechamento da aplicação.

Quando uma activity é interrompida porque outra é iniciada, o sistema é notificado dessa alteração através dos métodos da atividade chamada conforme vemos na imagem abaixo:

(clique na imagem para ampliar)

Métodos Android

Como já ficou claro (assim espero), os métodos seguem uma sequencia lógica e estruturada. Cada chamada fica refém de uma sequencia tendo opções até a destruição dos recursos alocados.

Neste ciclo existem três laços extremamente importantes e devem ser monitorados dentro de sua atividade:

  1. Observando o ciclo de vida completo de uma atividade, notamos que ele acontece entre a primeira chamada do onCreate() até o onDestroy(). Esta atividade vai fazer toda a configuração do estado "global" da aplicação no onCreate() e liberar os recursos remanescentes em onDestroy().
  2. A atividade fica visível entre o onStart() até o onStop(). Durante esse tempo a atividade pode ser visualizada pelo usuário mesmo não estando totalmente disponível. Entre esses dois métodos você pode manter os recursos que são necessários para mostrar a atividade ao usuário.
  3. Uma atividade está completamente visível para o usuário entre onResume() e onPause(). Durante esse tempo a atividade está na frente de outras atividades e interagindo com o usuário. Uma atividade pode frequentemente ir de status resumed para paused. Por exemplo, quando o smartphone ou dispositivo onde o app roda entrar em modo sleep e por isso o código desses métodos deve ser mais simples.

Espero que tenham gostado. No próximo post estarei concluindo mais algumas questões sobre o Activity.

Um grande abraço e ótimo estudo.

Arquitetura

Twitter: @vitormeriat
Microsoft MSP – Brasília
vitor.pereira@studentpartners.com.br
vitor.meriat@srnimbus.com


Author's profile picture

Vitor is a computer scientist who is passionate about creating software that will positively change the world we live in.

MVP Azure - Cloud Architect - Data science enthusiast


5 minutes to read