Durante o uso normal de uma aplicação, o primeiro plano da ação
ocasionalmente será obstruído por outros componentes visuais que obrigam a ação
ser suspensa. Por exemplo, quando uma ação semitransparente abre (tais como as que
definem o estilo da interface gráfica), a ação anterior será suspensa. Enquanto
a ação estiver parcialmente visível, mas não com o foco atualmente ativo, se manterá
suspensa.
De qualquer forma, uma vez que ação estiver totalmente obstruída e não visível,
irá parar (será discutido na próxima postagem).
Assim que sua ação estiver no estado suspenso, o sistema chama o método onPause() na sua Ação, que lhe permitira parar atividades que
não devem continuar suspensas (tais como vídeo) ou persistir qualquer
informação que deve ser permanentemente salva em caso do usuário continuar a
abandonar o aplicativo, se o usuário retorna sua ação de um estado suspenso, o
sistema retoma e chama o método onResume().
Nota: Quando sua ação recebe uma chamada para onPause(), pode ser uma indicação de que sua
ação será suspensa por um momento e o usuário pode retornar o foco para sua
ação. De qualquer forma, costuma ser a primeira indicação de que o usuário está
deixando sua ação.
Figura. Quando uma
ação semitransparente obscurece sua ação, o sistema chama onPause() e a ação
aguardo no estado Suspenso (1). Se o usuário retorna a ação quando ainda está
suspenso, o sistema chama onResume() (2).
Suspendendo Sua Ação
Quando o sistema chama onPause() para sua
ação, tecnicamente significa que sua ação está parcialmente visível, mas na
maioria dos casos é uma indicação de que o usuário está deixando sua ação e de
que em breve ira para o estado Parado. Você deve normalmente usar a chamada de onPause() para:
·
Para animações ou outras atividades que podem consumir processamento,
·
Armazenar mudanças não salvas, mas somente se o usuário espera que tais
mudanças sejam permanentemente salvas quando ele sai (tais como rascunho de
email).
·
Liberar recursos do sistema, tais como receptores de radiodifusão,
tratamento de sensores (como GPS), ou qualquer recurso que possa afetar a vida
da bateria enquanto sua ação estiver suspensa e o usuário não precisa dela.
@Override
public void onPause() {
super.onPause(); // Always call the superclass method first
// Release the Camera because we don't need it when paused
// and other activities might need to use it.
if (mCamera != null) {
mCamera.release()
mCamera = null;
}
}
public void onPause() {
super.onPause(); // Always call the superclass method first
// Release the Camera because we don't need it when paused
// and other activities might need to use it.
if (mCamera != null) {
mCamera.release()
mCamera = null;
}
}
Geralmente, você não deve usar onPause() para armazenar mudanças do usuário (tais como informações pessoais adicionada em um formulário) de forma permanente. A única vez em que você deve manter as alterações do usuário em um armazenamento permanente utilizando onPause() é quando você tem certeza de que o usuário espera que as mudanças tenham salvamento automático (tais como quando escreve uma mensagem). De qualquer forma, você deve evitar realizar trabalhos de processamento intensivo no processador durante onPause(), tais como escrever no bando de dados, por que pode atrasar a transição visível para a próxima ação ( você deve realizar operações finais de processamento pesado durante onStop()).
Você deve manter o total de operações feitas no método onPause() relativamente
simples em ordem de permitir uma rápida transição para o próximo destino do usuário
caso sua ação esteja sendo parada.
Nota: Quando sua ação é suspensa, a instância da Ação é mantida na memória
e é novamente chamada quando a ação retoma. Você não precisa reinicializar
componentes que foram criados durante a chamada dos métodos que levaram para o
estado Retomado.
Retomando Sua Ação
Quando o usuário retoma sua ação de um estado Suspenso, o sistema chama
o método onResume().
Esteja consciente de que o sistema chama este método cada vez que sua ação
vier para o primeiro plano, inclusive quando é criado pela primeira vez. Assim
sendo, você deve programar onResume() para
inicializar componentes que você irá liberar durante onPause() e realizar
quaisquer inicializações que deve ocorrer a cada vez que a ação entrar no
estado Retomado (tais como inicio de animações e inicializar componentes
somente usados enquanto a ação tem o foco do usuário).
O seguinte exemplo de onResume() é a contra
parte do exemplo de onPause() visto acima,
inicializa a câmera e libera quando a ação for suspensa.
@Override
public void onResume() {
super.onResume(); // Always call the superclass method first
// Get the Camera instance as the activity
// achieves full user focus
if (mCamera == null) {
initializeCamera(); // Local method to handle camera init
}
}
public void onResume() {
super.onResume(); // Always call the superclass method first
// Get the Camera instance as the activity
// achieves full user focus
if (mCamera == null) {
initializeCamera(); // Local method to handle camera init
}
}

Nenhum comentário:
Postar um comentário