Usando e Gerenciando Activities
Ciclo de vida Activity
2
Especificando a execução
●
●
Especifica a Activity que é ponto principal
de entrada de sua aplicação
Se a ação MAIN action ou a categoria
LAUNCHER não for declarada para uma
activity, o ícone não aparece na HOME
3
Método onCreate()
●
Executa a lógica de inicialização da
aplicação que deve ocorrer apenas uma
vez para todo o ciclo de vida da activity
4
Método onCreate()
●
Quando onCreate() termina a execução, o sistema
chama onStart() e onResume().
●
●
●
A activity não reside nos estados criados ou iniciados.
A activity se torna visível para o usuário quando
onStart() é chamado,
onResume() é rapidamente chamado em seguida
●
activity permanece no estado de retomada até que algo
aconteça para mudar,
–
uma chamada é recebida,
–
o usuário navega para outra activity , ou
–
a tela do dispositivo desliga-se.
5
Destruindo uma Activity
●
●
O sistema chama onDestroy() como último sinal de que a activity está
sendo completamente removida da memória do sistema.
Nota: O sistema chama onDestroy() depois de onPause() e
onStop() em todas as situações, exceto quando:
●
Chamar finish() de dentro do onCreate()
–
–
activity funciona temporariamente para lançar uma outra atividade
o sistema chama imediatamente onDestroy() sem chamar qualquer um dos
outros métodos de ciclo de vida.
6
Destruindo uma Activity
●
●
A maioria dos aplicativos não precisam
implementar o onDestroy(), porque as
referências de classe locais são destruídos com
a activity e sua activity deve executar a maioria
de limpeza durante onPause() e onStop().
Se a activity inclui tópicos criados durante
onCreate() ou outros recursos de longa duração
que poderiam vazar memória se não forem
devidamente fechado, eles devem ser destruídos
durante onDestroy().
7
Pausando e Retornando
●
Activity do primeiro plano é obstruída por outros
componentes visuais e provocam a pausa da
Activity.
●
●
●
Uma activity semitransparente abre (como um
diálogo), a activity anterior pausa (OnPause).
Enquanto a activity ainda é parcialmente visível, mas
atualmente não é a activity em foco, permanece
interrompida.
No entanto, se a Activity for totalmente obstruída
e ficar não é visível, ela para (onStop)
8
Pausando e Retornando
●
●
A Activity entra no estado de pausa, o sistema chama o
método onPause(), que permite parar ações que não
devem continuar durante a pausa (como um vídeo) ou
persistir alguma informação que deva ser salva.
Se retornar a partir do estado de pausa, o sistema reinicia-a
e chama o método onResume().
9
Pausando
●
Use onPause() para:
●
●
●
Parar animações ou outras ações que podem
consumir CPU.
Confirmar alterações não salvas, caso tenham
que ser permanentemente salvas quando saem.
Liberar recursos do sistema:
–
broadcast receivers, handles para sensores (como
GPS), ou outros recursos que afetem a vida útil da
bateria e não necessários durante a pausa da
atividade.
10
Pausando
●
Exemplo: liberando o uso da camera
11
Pausando
●
Não se deve usar onPause() para armazenar
as alterações do usuário (como informações
inseridas em um formulário) de modo
permanente.
●
●
Só faça armazenamento permanente dentro
onPause() para alterações salvas automaticamente
Procure manter a quantidade de operações
realizadas no método onPause () relativamente
simples, a fim de permitir uma transição rápida
para o próximo destino caso sua atividade deva
ser realmente interrompida.
12
Pausando
Nota:
●
●
Quando a activity é interrompida, uma
instância dela é mantida residente na
memória e recuperada quando a activity
recomeça.
Não é necessário reinicializar os
componentes criados durante qualquer um
dos métodos de retorno de chamada que
antecederam o estado retomado.
13
Retornando
●
●
Quando o usuário retoma suas activities a
partir do estado de pausa, o sistema
chama o método onResume().
O sistema chama este método cada vez
que a activity vem para o primeiro plano,
inclusive quando ele é criado pela primeira
vez.
14
Retornando
●
Use onResume() para inicializar os
componentes liberados durante onPause()
e executar outras inicializações que devem
ocorrer cada vez que a atividade entra no
estado de Resumed (iniciar animações,
inicializar componentes utilizados apenas
quando a atividade tem o foco do usuário).
15
Retornando
16
Parando e Reiniciando
●
●
Garante que os usuários percebam que o aplicativo está
sempre vivo e que não perde seu progresso.
Cenários principais em que a Activity é parada e
reiniciada:
●
●
●
Usuário abre outro aplicativo. A atividade atualmente em primeiro
plano fica parada. Se o usuário retorna a partir do ícone da tela
inicial lançador ou a janela Apps, a atividade é reiniciada.
Aplicativo que inicia uma nova atividade. A atividade atual é
interrompido quando a segunda atividade é criada. Se o usuário
pressiona o botão Voltar, a primeira atividade é reiniciada.
Recebe um telefonema durante o uso do aplicativo em seu
telefone.
17
Parando e Reiniciando
●
●
●
Quando o usuário deixa a sua activity, o sistema chama onStop() para
parar a activity (1).
Se o usuário retorna ao passo que a activity está parado, o sistema
chama onRestart() (2), rapidamente seguido por onStart() (3) e
onResume() (4).
Não importa o que ocorre ao parar, o sistema chama sempre onPause()
antes de chamar onStop().
18
Parando a activity
●
Embora o método onPause() seja chamado antes onStop(),
deve-se usar onStop() para executar operações maiores,
que consomem mais CPU, como gravar informações em um
banco de dados.
19
Parando a activity
●
●
●
Quando sua activity é interrompida, ela é
mantida residente na memória e recuperada
quando recomeça.
Não precisa reinicializar os componentes criados
durante qualquer um dos métodos de retorno de
chamada que antecederam o estado retomado.
O sistema também mantém o controle do estado
atual para cada exibição no layout
●
se o usuário digitou texto em um widget EditText, seu
conteúdo é retido para que não seja necessário salvar
e restaurar.
20
Parando a activity
Nota:
●
Mesmo que o sistema destrua a activity
enquanto parada, ele ainda mantém o
estado de seus objetos de exibição (como
texto em um EditText) em um Bundle e
restaura quando o usuário navega de volta
para a mesma instância da atividade
21
Parando a activity
●
●
●
Quando a activity recebe uma chamada para o método
onStop(), não está mais visível e deve liberar quase todos
os recursos que não são necessários enquanto o usuário
não a está usando.
Uma vez interrompida, o sistema pode destruir a instância
se ele precisar recuperar a memória do sistema.
Em casos extremos, o sistema pode apenas matar o
processo de aplicação sem chamar onDestroy da activity
final, por isso é importante que usar onStop() para liberar
recursos.
22
Recriando uma Atividade
●
Existem situações em que a Activity é destruída
devido a um comportamento normal aplicativo,
●
●
●
sua activity sinaliza sua própria destruição, chamando
finish().
O sistema pode destruir a Activity se
●
●
●
usuário pressiona o botão Voltar ou
estiver parada e não foi usada em um longo período
de tempo ou
a activity no primeiro plano requer mais recursos
para que o sistema desligue os processos em
background para recuperar a memória.
23
Recriando uma Atividade
●
Quando uma Activity é destruída ou terminar por si
mesmo, a instância da activity se vai para sempre,
●
●
o comportamento indica que a activity não será mais necessária.
Se o sistema destrói a activity devido a restrições do
sistema (ao invés de um comportamento normal ), ele
lembra que ela existia pois,
●
se o usuário navegar de volta para ela, o sistema cria uma nova
instância da activity utilizando o conjunto de dados gravados,
que descreve o estado da activity quando foi destruído.
24
Recriando uma Atividade
●
Os dados guardados que o sistema usa para restaurar o
estado anterior é chamado de "estado da instância“
●
●
coleção de pares chave-valor armazenados em um objeto
Bundle.
Atenção: a activity será destruída e recriada cada vez
que o usuário girar a tela.
●
Quando a mudança de orientação da tela, o sistema destrói e
recria a atividade de plano porque a configuração da tela mudou
e sua activity pode precisar carregar recursos alternativos (tais
como o layout).
25
Recriando uma Atividade
●
●
●
●
O sistema utiliza o estado da instância Bundle para guardar
informações sobre cada objeto View em seu layout (como o valor do
texto inserido em um objeto EditText).
Se a atividade é destruída e recriada, o estado do layout é
restaurado ao seu estado anterior sem a exigência de nenhum
código.
No entanto, a atividade pode ter mais informações sobre o estado
que você gostaria de restaurar, como variáveis ​membros que
acompanham o progresso do usuário na atividade.
IMPORTANTE: Para o sistema Android restaurar o estado das views
da activity, cada view deve ter um ID único, fornecido pelo android:
atributo id.
26
Recriando uma Atividade
●
●
●
Para salvar dados adicionais sobre o estado de
atividade, sobreponha o método de retorno
onSaveInstanceState().
O sistema chama este método quando o usuário
está deixando sua atividade e passa o objeto
Bundle que será salvo no caso em que sua
atividade é destruída de forma inesperada.
Se o sistema recriar a instância de atividade mais
tarde, ele passa o mesmo objeto Bundle tanto
para os métodos onRestoreInstanceState() e
onCreate().
27
Recriando uma Atividade
●
●
●
Ao iniciar a parada da atividade, o sistema chama onSaveInstanceState()
(1).
É possível especificar os dados de estado adicionais para salvar caso a
atividade deva ser recriada.
Se a activity é destruída e deve ser recriada, o sistema transfere os dados
de estado definidos em (1) para so métodos onCreate() (2) e
onRestoreInstanceState() (3).
28
Salvando o estado da Activity
●
●
●
O sistema ao chamar onSaveInstanceState() salva as
informações de estado com uma coleção de pares chavevalor.
A implementação padrão desse método salva informações
sobre o estado de hierarquia de vista da atividade, como o
texto de um widget EditText ou a posição de rolagem de um
ListView.
Para salvar as informações de estado adicional para a sua
atividade, você deve implementar onSaveInstanceState() e
adicionar pares chave-valor para o objeto Bundle.
29
Salvando o estado da Activity
●
Cuidado: Sempre chame a implementação de
superclasse onSaveInstanceState() para a
implementação padrão salvar o estado da
hierarquia das Views
30
Restaurando o estado de uma
Activity
●
●
Tanto o método de retorno OnCreate()
quanto onRestoreInstanceState() podem
receber o Bundle que contém as
informações de estado da instância.
Como o método onCreate() é chamado
para criar uma nova instância de sua
activity ou recriar uma anterior, verifique se
o Bundle é nulo antes de tentar lê-lo.
●
Se for nulo, então o sistema está criando uma
nova instância da atividade.
31
Restaurando o estado de uma
Activity
32
Restaurando o estado de uma
Activity
●
●
Em vez de restaurar o estado durante onCreate(), pode-se
usar onRestoreInstanceState(), chamado após o método
onStart().
O sistema chama onRestoreInstanceState() somente se
houver um estado salvo para restaurar, assim não é
necessário verificar se o pacote é nulo.
33
Exercício
•
Faça um aplicativo para verificar o gerenciamento das
activities.
•
Implemente os métodos onCreate, OnStop, etc... exibindo uma
mensagem no Logcat
public class ExampleActivity extends Activity {
@Override
public void onCreate(Bundle
savedInstanceState) {
super.onCreate(savedInstanceState);
// A activity é criada.
}
@Override
protected void onStart {
super.onStart();
// A activity será visível.
}
@Override
protected void onResume {
super.onResume();
// A activity tornou-se visível.
}2013
@Override
protected void onPause {
super.onPause();
// Outra activity tem o foco na aplicação.
}
@Override
protected void onStop {
super.onStop();
// A activity não é mais visível.
}
@Override
protected void onDestroy {
super.onDestroy();
// A activity foi destruída.
}
34
}
Download

Gerenciando Activities