Introdução

Acitivy ou Atividades são um dos pilares no desenvolvimento de aplicativos para Android. É possível
compreender cada Activity como uma “tela” da aplicação, em verbos bem diretos e didáticos.
Obviamente há muitos outros recursos a serem explorados neste componente. Entretanto, sua
compreensão vai além da criação de um layout e apresentação de conteúdo do aplicativo. Isso pelos
layouts serem construídos em arquivos diferentes e são utilizados (chamados) pela Activity.

O objetivo desta postagem é apresentar o que é a Activity, do ponto de vista de um recurso de
desenvolvimento fundamental em aplicativos Android; suas principais características; seu ciclo de
vida, buscando entender o comportamento de uma Atividade e os seus principais métodos de gestão;
finalizando com um tópico sobre as boas práticas para desenvolvimento de aplicativos em Android.

Definição

Activity é um componente de aplicativo que fornece uma tela com a qual os usuarios podem interagir
para fazer algo, como discar um número no telefone, tirar uma foto, enviar um e-mail ou ver um mapa
(ANDROID DEVELOPERS, 2016).

Um aplicativo desenvolvido poderá ter uma ou mais activitys, para utilização de suas
funcionalidades. É necessário haver uma activity principal (main), que inicia o aplicativo, em
termos básicos, podemos nomeá-la de primeira tela do app.

O desenvolvedor pode utilizar apenas esta
activity para realizar todas as funcionalidades do seu aplicativos, dependendo da complexidade do
escopo, ou utilizar um conjunto de activitys que implementem toda a regra de negócio prevista na
análise do projeto.

Funcionamento da Activity

A atividade está diretamente relacionada com o layout que ela irá implementar. Através de um método
de criação ela é instanciada e apresentada no monitor do hardware, chamando o arquivo de layout para
organizar todos os seus componentes na tela.

Apesar de ser possível desenvolver um aplicativo com apenas uma atividade, o comum é que encontremos
várias delas relacionadas, havendo passagem entre elas, o que é conhecido como switch entre telas.

Além desta funcionalidade é, a partir da Activity, que várias outras chamadas são realizadas por
meio de código Java. Seja para alguma funcionalidade do próprio aplicativo, de acordo com sua regra
de negócio, ou para algum recurso do Android. Nesta perspectiva é a atividade que permite a
interação entre funcionalidade e usuário, através da chamada de um layout que implementa na tela
componentes como botões, campos de texto, imagens, etc.

Estados da Activity

Os aplicativos normalmente contêm diversas atividades. Cada atividade deve ser projetada com relação
a tipos específicos de ações que o usuário pode realizar e que podem iniciar outras atividades. Por
exemplo: um aplicativo de e-mail pode ter uma atividade para exibir uma lista de novas mensagens.
Quando o usuário seleciona uma mensagem, uma nova atividade abre para exibir essa mensagem (ANDROID
DEVELOPERS, 2016a)

As atividades se relacionam entre si a partir da gestão de uma pilha de atividades. Assim, quando um
aplicativo apresenta mais de uma atividade, o que acontece é que a primeira atividade aberta entra
na pilha, sobre ela vão pondo-se as demais atividades que forem interagindo com o usuário dentro do
aplicativo. Para solucionar esta gestão é que a pilha foi implementada.

Assim, o Android gerencia as Tarefas, que são uma coleção de atividades que mantém o usuário dentro
de uma mesmo fluxo dentro do aplicativo, mesmo que para isso ele precise utilizar atividades de
outras aplicações, como um email, ou compartilhamento de conteúdo.

A imagem abaixo apresente como ficaria uma pilha de atividades em um aplicativo Android.

Figura 1. Representação de como cada nova atividade em uma tarefa adiciona um item à pilha de
retorno. Quando o usuário pressiona o botão Voltar, a atividade atual é destruída e a atividade
anterior reinicia.

Quando a atividade atual inicia outra, a nova atividade é colocada no topo da pilha e recebe foco. A
atividade anterior permanece na pilha, mas é interrompida. Quando uma atividade para, o sistema
retém o estado atual da interface do usuário. Quando o usuário pressiona o botão Voltar, a atividade
atual é retirada do topo da pilha (a atividade é destruída) e a atividade anterior reinicia (o
estado anterior da IU é restaurado). Atividades na pilha nunca são reorganizadas, somente colocadas
e retiradas da pilha — colocadas na pilha quando iniciadas pela atividade atual e retiradas quando o
usuário se retira dela usando o botão Voltar (ANDROID DEVELOPERS, 2016a).

Quando a atividade A inicia a atividade B…
…a atividade A é interrompida, mas o sistema retém seu estado (como posição de rolagem e
texto inserido em formulários). Se o usuário pressionar o botão Voltar na atividade B, a
atividade A reiniciará com seu estado restaurado.

Quando o usuário se retira de uma tarefa pressionando o botão Página
inicial…

…a atividade atual é interrompida e sua tarefa fica em segundo plano. O sistema retém o
estado de cada atividade na tarefa. Se, mais tarde, o usuário reiniciar a tarefa
selecionando o ícone de inicialização que a inicia, ela ficará em primeiro plano e
reiniciará a atividade no topo da pilha.

Se o usuário pressionar o botão Voltar…
a atividade atual será retirada da pilha e destruída. A atividade anterior na pilha é
retomada. Quando uma atividade é destruída, o sistema não retém seu estado.

As atividades podem ser instanciadas diversas vezes mesmo a partir de outras
tarefas.

Para maiores informações sobre o Activity Stack
clique aqui
.

Ciclo de Vida da Activity

Iniciamos uma Activity através da criação de uma subclasse que estende de Activity. Dois métodos são
fundamentais na criação de uma atividade, o método onCreate() e onPause(). Que serão abordos mais à
frente.

No método onCreate() é fundamental que se implemente o setContentView() para definição de uma layout
da interface da atividade. Enquanto o método onPause() é o primeiro indicio de que o usuário estará
saindo da atividade.

O ciclo de vida apresenta alguns métodos de retorno que auxiliam o desenvolvedor a gerenciar a
atividade em seus diversos estágios. Estes métodos podem ser visualizados abaixo de acordo com sua
implementação feita no site http://developer.android.com.

As implementações dos métodos acima podem ser trabalhadas corretamente quando conhecemos as “idas e
vindas” do ciclo de vida de uma atividade. É um processo de simples compreensão, mas que necessita
de atenção aos detalhes as implicações.

Abaixo podemos visualizar na figura o fluxo do ciclo de vida da Activity, e também, quando cada
método é chamado, da criação até a destruição de uma atividade.

Abaixo será apresentado uma descrição dos métodos que compõem o ciclo de vida da Activity.

onCreate()
Executado quando uma Activity é criada. Geralmente é o método responsável por carregar os layouts
(XML) e outras operações de inicialização. Só é executado 1 vez durante o Clico de Vida da Activity.

onStart()
É chamado logo depois do onCreate() ou quando a Activity que estava em background volta a ter foco.
(Depois dela temos onResume, caso a Activity esteja em primeiro plano ou onStop se ela não for
visível).

onResume()
Método chamado quando a Activity vai começar a interagir com o usuário (ou retoma foco). Sempre vem
depois do onStart, caso a Activity tenha sido iniciada ou se ela estava parada (onStop), ou pode
ocorrer direto (vindo depois do onPause) caso a Activity, que não estava em primeiro plano, mas
ainda visível, volte para o topo.

onPause()
Ocorre logo antes da Activity perder o foco, ou seja, quando ir para o Background, mas não foi
(ainda) destruída. Geralmente é usada para parar animações e recursos que estejam consumindo
processamento e persistir dados não salvos, desta forma, se (por falta de recursos) a Activity for
destruída, não perderemos essas informações. Tenha em mente que a Activity que está tomando o foco
não será criada até que esse método retorne, sendo assim, o código aqui também deve ser leve.

onStop()
É chamado logo depois do onCreate() ou quando a Activity que estava em background volta a ter foco.
(Depois dela temos onResume, caso a Activity esteja em primeiro plano ou onStop se ela não for
visível).

onRestart()
É chamado quando uma Activity que estava parada volta ao foco. Bem antes do onStart.

onDestroy()
Esse método ocorre logo antes da Activity ser destruída/finalizada (alguém chamou finish() ou o
sistema está temporariamente a destruindo para salvar recursos, você pode verificar isFinishing()
para distinguir essas situações).

Conclusão

O trabalho em tela teve por objetivo central apresentar as principais características e dar um
suporte inicial a compreensão das Activitys no desenvolvimento de aplicativos para sistemas Android.

Nesta perspectivas apresentou-se sua definição, principais carecterísticas de funcionamento, a
relação de uma atividade com a pilha de Activitys, a compreensão do que é uma tarefa finalizando com
o Ciclo de Vida da atividades.

Portanto, esta equipe considera que este é um conhecimento inicial basilar para começar a
compreender a plataforma, bem como todos os recursos que elas dispõem. Este recurso também permite
já a iniciação do desenvolvedor no ambiente de criação de aplicativos, abrindo espaço para uma
multiplicidades de oportunidades.

Assim, esperamos que este primeiro artigo possa servir de incentivo para muitos novos
desenvolvedores.

Referências

Android Developers, Google. Disponível em:
https://developer.android.com/guide/components/activities.html. Acesso em 26 de maio de 2016.

Android Developers, Google. Disponível em:
https://developer.android.com/guide/components/tasks-and-back-stack.html. Acesso em 26 de maio de
2016a.

GLAUBER, Nelson. Dominando o Android: do básico ao avançado. Novatec, São Paulo, 2015.

 

Apresentado pelo grupo:
– Gabriel Vasconcelos
– Messias Batista
– Vanessa Marques