Transcript
Page 1: Curso Android - 03 Conceitos Chaves

1

Conceitos Chaves do Android

Activity

Ao desenvolver uma aplicação para Android, devemos estar familiarizados com alguns conceitos básicos relacionados à sua estrutura. Entre eles, podemos citar dois componentes essenciais para toda aplicação: as activities e os intents.

Uma activity herda da classe android.app.Activity ou subclasses desta, geralmente representa uma tela da aplicação e é responsável por tratar os eventos gerados nessa tela, como quando o usuário pressiona um botão ou quando um item de menu é escolhido.

Para desenvolver qualquer aplicação com interface em Android é necessário que se tenha ao menos uma Activity. É importante ressaltar que a Activity é apenas a tela exibida, sem nenhum layout. Geralmente, para adicionarmos conteúdo nas activies, devemos utilizar os arquivos XML de layout do Android, nos quais definem-se todos os elementos visuais, tais como botões e imagens.

Cada activity é responsável por controlar os eventos da tela e definir qual View será responsável por desenhar a interface gráfica do usuário. Em resumo, quando falamos de activity estamos falando de uma tela ou uma “atividade”, assim se você está pensando em criar uma nova tela, vai precisar de uma nova activity, então se o usuário solicitar uma nova tela na aplicação, você saberá que será necessário construir uma nova activity.

Na prática podemos associar a palavra activity à palavra “tela”. Por exemplo, vamos analisar as seguintes frases, onde a primeira está escrita com a palavra activity e a outra com a palavra “tela”.

O Sistema operacional decidiu encerrar a activity X para economizar memória.

O Sistema operacional decidiu encerrar a tela X para economizar memória.

Uma activity deve implementar o método onCreate(bundle), que é obrigatório e responsável por realizar a inicialização necessária para executar a aplicação necessária para executar a aplicação, como, por exemplo, chamar o método setContentView(View) que é responsável por definir o layout (já desenhado) para determinada activity.

Exemplo de Activity.

Page 2: Curso Android - 03 Conceitos Chaves

2

Ciclo de Vida de uma Activity

Quando você está jogando a activity que esta no topo da pilha da “activity stack” é a activity do jogo, as demais activities que estão abaixo da pilha, podem estar em modo de pausa, totalmente parado ou executando em segundo plano. Mas se você está jogando e recebe uma ligação. O que acontecerá?

O Android colocará a aplicação de ligação no topo da pilha e a aplicação do jogo abaixo, temporariamente parada. Existem alguns métodos que controlam o ciclo de vida de uma aplicação. São eles, onCreate(), onStart(), onResume(), onPause(),onStop() e o onDestroy(). Também existem subníveis de um ciclo de vida, são eles, entire lifetime, visibile lifetime e o foreground lifetime. Abaixo existe uma imagem onde você pode observar o comportamento de uma activity.

Angry Birds

Page 3: Curso Android - 03 Conceitos Chaves

3

Métodos do Ciclo de Vida

• onCreate() É um método obrigatório e é invocado uma vez. Geralmente no mesmo é definido o View da Acitivity. Em seguida é invocado o onStart.

• onStart() É chamada imediatamente após a onCreate() – e também quando uma Activity que estava em background volta a ter foco.

• onResume() Sempre invocada quando a Activity recebe o foco novamente.

• onPause() Salva o estado da aplicação, quando o celular entra em modo de espera por exemplo.

• onStop() – Quando a mesma está sendo encerrada e não fica mais visivel ao usuário.

• onDestroy() Este método literalmente finaliza a aplicação e pode ser invocado também pelo sistema operacional, caso ele deseje desalocar recursos.

• onRestart() Quando uma Activity volta depois de ficar fora temporariamente e invoca o método onStart.

Processo do ciclo de vida

Cada ciclo desses se inicia durante a chamada de um dos métodos que controlam o ciclo de vida da atividade e termina quando outro método é chamado.

• Entire lifetime – Ciclo de vida completo entre o início e destruição da activity.

Define o tempo de vida completo de um activity. Ele acontece entre as chamadas do método onCreate() e onDestroy() os quais são chamados apenas uma única vez, quando a activity é criada e destruída.

• Visible lifetime – Activity está iniciada, mas pode estar no topo da pilha interagindo com o usuário ou temporariamente parada em Segundo plano.

Este ciclo ocorre entre os métodos onStart() e onStop(). A partir da execução do método onStart(), o fluxo do ciclo visible lifetime é executado entre as chamadas dos métodos onResume(),onPause(), onStop() e onRestart(). Durante esse período, a activity pode está visível para o usuário ou pode está sendo executada em segundo plano.

• Foreground lifetime – Activity está no topo da pilha e interagindo com o usuário.

Esse ciclo de vida ocorre entre os métodos onResume() e onPause. Durante esse tempo, a activity está no topo da pilha e interagindo com usuário. Uma activity pode frequentemente oscilar nesses estados de onResume() e onPause(). Um exemplo disto é um jogo que entra em pausa e pode ser continuado depois.

Exemplo de Ciclo de Vida

package curso.android;

import android.app.Activity;

import android.os.Bundle;

import android.util.Log;

import android.widget.TextView;

Page 4: Curso Android - 03 Conceitos Chaves

4

public class ExemploCicloVida extends Activity {

protected static final String TAG = "Curso Android";

public void onCreate(Bundle icicle) {

super.onCreate(icicle);

Log.i(TAG, "Método - .onCreate() chamado: " + icicle);

TextView t = new TextView(this);

t.setText("Exemplo do ciclo de vida.

\nConsulte os logs no LogCat.");

setContentView(t);

}

protected void onStart() {

super.onStart();

Log.i(TAG, "Método - .onStart() chamado.");

}

protected void onRestart() {

super.onRestart();

Log.i(TAG, "Método - .onRestart() chamado.");

}

protected void onResume() {

super.onResume();

Log.i(TAG, "Método - .onResume() chamado.");

}

protected void onPause() {

super.onPause();

Log.i(TAG, "Método - .onPause() chamado.");

}

protected void onStop() {

super.onStop();

Log.i(TAG, "Método - .onStop() chamado.");

}

protected void onDestroy() {

super.onDestroy();

Log.i(TAG, "Método - .onDestroy() chamado.");

}

}

As informações de execução estarão dispostas no LogCat (Window > Show View > LogCat) do Eclipse:

Page 5: Curso Android - 03 Conceitos Chaves

5

Se deixarmos o LogCat aberto, e executarmos o código acima, ele retornará várias informações a respeito da aplicação, algumas delas são as já escritas na classe ExemploCicloVida.java como logs.

Esse log se apresenta da seguinte forma:

Log.i(TAG, "Método - .onCreate() chamado: " + icicle);

As informações que escrevemos possuem a TAG “Curso Android” e na frente dela, o retorno que escolhemos para cada método chamado.

Como vimos no início do módulo, quando se executa uma activity, os métodos onCreate(), onStart() e onResume() são chamados automaticamente na sua inicialização.

Se clicarmos no botão Home, que vai fazer a aplicação entrar em segundo plano e exibir a tela seguinte (tela inicial, por exemplo).

Exemplo de Pilha (stack, ou LIFO – Last In, Fisrt Out).

Diferente do método onPause(), o método onDestroy() mata a aplicação que está no topo da pilha dando espaço para a atividade subsequente.

Menu

App02

Menu

App01

App01 App01 Menu Novo App

Kill App02

Page 6: Curso Android - 03 Conceitos Chaves

6


Top Related