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
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
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,
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.
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()
.
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
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
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
Pausando
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.
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.
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.
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).
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
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()
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.
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.
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
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.
Recriando uma Atividade
●
Existem situações em que a Activity é destruída
devido a um comportamento normal aplicativo,
●
usuário pressiona o botão Voltar ou
●
sua activity sinaliza sua própria destruição, chamando
finish()
.
●
O
sistema pode destruir a Activity
se
●
estiver
parada e não foi usada em um longo período
de tempo ou
●
a
activity no primeiro plano requer mais recursos
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.
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).Recriando uma Atividade
● O sistema utiliza o estado da instância Bundle para guardarinformaçõ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.
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
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
Salvando o estado da Activity
●
O sistema ao chamar
onSaveInstanceState()
salva as
informações de estado com uma coleção de pares
chave-valor.
●
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.
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
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
.
Restaurando o estado de uma
Activity
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.
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();
@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();