Académique Documents
Professionnel Documents
Culture Documents
de vida
Prof. Diogo S. Mar ns
santana.mar ns@ufabc.edu.br
10 de junho de 2019
1 / 23
Revisão: componentes de uma aplicação Android
Componentes a váveis
1 A vidades
2 Serviços
3 Provedores de Conteúdo
4 Receptores de Broadcast
Componentes de a vação
1 Intents
A váveis: pontos de
entrada
A vação: comunicação
Adaptado de: https://prezi.com/guq68qnmknbi/ entre componentes
android-application-architecture-garima/
2 / 23
Revisão: A vidades
A vidade
Representa uma tela única de uma aplicação Android.
3 / 23
Relação Aplicação-A vidades
1 aplicação: n a vidades
Intent Intent
Empilhamento: a vação de
a vidade (via intent)
Pilha de histórico (Back Stack)
Desempilhamento:
Estrutura de dados que
botão“back”
organiza temporalmente as
a vidades de uma tarefa.
5 / 23
Tela de Overview
6 / 23
Back Stack: exemplo
http://developer.android.com/guide/components/tasks-and-back-stack.html
7 / 23
Back Stack: simulação
http://developer.android.com/guide/components/tasks-and-back-stack.html
9 / 23
Back Stack: instanciação de tarefas
Comportamento padrão
http://developer.android.com/guide/components/tasks-and-back-stack.html
10 / 23
Back Stack: instanciação de tarefas
Comportamento singleTask
Uma a vidade em “launch mode” singleTask é instanciada uma única vez, fazendo migrar toda a pilha em que foi
inicialmente criada. Fonte: http://developer.android.com/guide/components/tasks-and-back-stack.html
11 / 23
Ciclo de vida de uma A vidade
12 / 23
Ciclo de vida de uma A vidade
13 / 23
Ciclo de vida: métodos callback
onCreate()
configura estado global
renderiza e configura a interface do usuário
super.onCreate()
setContentView()
onRestart()
chamada após a a vidade ser parada (mas ainda na memória)
restaura o estado da aplicação
onStart()
a vidade prestes a ser visualizada
onResume()
Inicia a exibição da a vidade
onPause()
o foco vai ser transferido para outra a vidade
onStop()
a vidade não está mais visível
onDestroy()
a vidade vai ser removida da memória
14 / 23
Demonstração:
Rastreando o ciclo de vida de
uma A vidade
Obje vo: visualizar o ciclo de vida de a vidades por meio
da instrumentação dos métodos callback
Material: projeto aula3/TraceActivityLifeCycle, no
BitBucket
15 / 23
Demonstração: ciclo de vida de uma a vidade
A aplicação demo é simples:
NameInputActivity tem uma TextView e um Bu on
O usuário digita um nome e aperta o botão
Um intent abre a MessageRenderAc vity, passando o nome
MessageRenderActivity tem uma TextView que exibe o
nome recebido
16 / 23
Demonstração: ciclo de vida de uma a vidade
Para rastrearmos o ciclo de vida de NameInputActivity, instrumentamos
cada método de ciclo de vida com mensagens de log rotuladas:
1 @Override 24 (...)
2 protected void onCreate ( Bundle 25 Log .d( LOGTAG , ME + " paused " );
3 savedInstanceState ) { 26 }
4 (...) 27
5 Log . d ( LOGTAG , ME + " created " ); 28 @Override
6 Log . d ( LOGTAG , ME + " task id is " 29 protected void onStop () {
7 + this . getTaskId ()); 30 (...)
8 } 31 Log .d( LOGTAG , ME + " stopped " );
9 32 }
10 @Override 33
11 protected void onStart () { 34 @Override
12 (...) 35 protected void onDestroy () {
13 Log . d ( LOGTAG , ME + " started " ); 36 (...)
14 } 37 Log .d( LOGTAG , ME + " destroyed " );
15 38 }
16 @Override 39
17 protected void onResume () { 40 @Override
18 (...) 41 protected void onRestart () {
19 Log . d ( LOGTAG , ME + " resumed " ); 42 (...)
20 } 43 Log .d( LOGTAG , ME + " restarted " );
21 44 }
22 @Override
23 protected void onPause () {
NameInputAc vity passa por created -> started -> resumed -> paused
MessageRenderAc vity passa por created->started->resumed
Após MessageRenderAc vity estar renderizada, NameInputAc vity
passa por stopped
Quando rei o app de foco, MessageRenderAc vity passou por paused e
stopped
Se eu matasse o app, iria para destroyed
Note que tanto NameInputAc vity quanto MessageRenderAc vity estão
na mesma task
18 / 23
A vidades e mudanças de configuração
Mudanças de configuração
Mudança de orientação da tela
Disponibilidade de teclado sico
Mudança de idioma
etc.
Afetam o ciclo de vida da A vidade a va
A vidade é destruída
(Estado é salvo)
A vidade é (re-)criada
Manutenção de estado
automá co: componentes de interface padrão
manual: outros componentes customizados
nas a vidades: técnica obsoleta
(onRetainNonConfigurationInstance() e
getLastNonConfigurationInstance())
veremos adiante: veremos em “Fragmentos”
19 / 23
Demonstração:
Efeitos de mudanças de
configuração no ciclo de vida de
uma a vidade
Obje vo: visualizar como uma mudança de configuração
(e.g. orientação da tela) afeta o ciclo de vida de a vidades
Material: projeto aula3/TraceActivityLifeCycle, no
BitBucket
20 / 23
Mudança de configuração e ciclo de vida da a vidade
21 / 23
Prá ca:
Construir aplicação de mapas.
Obje vo: construir aplicação de pesquisa em mapa
Material: roteiro será indicado na aula
22 / 23
Leituras complementares
23 / 23
Até a próxima aula
A vidades: fundamentos e ciclo
de vida
Prof. Diogo S. Mar ns
santana.mar ns@ufabc.edu.br
10 de junho de 2019