• Nenhum resultado encontrado

Usando e Gerenciando Activities

N/A
N/A
Protected

Academic year: 2021

Share "Usando e Gerenciando Activities"

Copied!
34
0
0

Texto

(1)
(2)
(3)

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

(4)

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

(5)

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,

(6)

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.

(7)

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()

.

(8)

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

(9)

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

(10)

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

(11)

Pausando

(12)

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.

(13)

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.

(14)

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.

(15)

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).

(16)
(17)

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

(18)

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()

(19)

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.

(20)

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.

(21)

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

(22)

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.

(23)

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

(24)

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.

(25)

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).

(26)

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.

(27)

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

(28)

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

(29)

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.

(30)

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

(31)

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

.

(32)

Restaurando o estado de uma

Activity

(33)

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.

(34)

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();

Referências

Documentos relacionados

Este trabalho buscou, através de pesquisa de campo, estudar o efeito de diferentes alternativas de adubações de cobertura, quanto ao tipo de adubo e época de

O valor da reputação dos pseudônimos é igual a 0,8 devido aos fal- sos positivos do mecanismo auxiliar, que acabam por fazer com que a reputação mesmo dos usuários que enviam

A versão reduzida do Questionário de Conhecimentos da Diabetes (Sousa, McIntyre, Martins & Silva. 2015), foi desenvolvido com o objectivo de avaliar o

Realizar a manipulação, o armazenamento e o processamento dessa massa enorme de dados utilizando os bancos de dados relacionais se mostrou ineficiente, pois o

Além do teste de força isométrica que foi realiza- do a cada duas semanas, foram realizados testes de salto vertical (squat jump e countermovement jump), verificação da

Nessa situação temos claramente a relação de tecnovívio apresentado por Dubatti (2012) operando, visto que nessa experiência ambos os atores tra- çam um diálogo que não se dá

Neste tipo de situações, os valores da propriedade cuisine da classe Restaurant deixam de ser apenas “valores” sem semântica a apresentar (possivelmente) numa caixa

Para eficiência biológica, de forma geral, utiliza-se a comparação de produtividades entre sistemas (monocultivo e cultivo consorciado), sendo avaliados a partir de