Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
CCT0080 – Programação para Dispositivos Móveis Aula 05: Entendendo a Classe Activity Estrutura da Aula A classe Activity Ciclo de Vida Os Métodos Depurador Tela LogCat Programação para Dispositivos Móveis AULA 05: Entendendo a classe Activity Prof. Eduardo Luiz Pareto A Classe Activity A classe Activity Representa uma tela com Interface Gráfica capaz de prover algum tipo de interação com o usuário. Uma aplicação Android pode ser composta de diversas activities para fornecer um conjunto de funcionalidades para o Usuário Programação para Dispositivos Móveis AULA 05: Entendendo a classe Activity Prof. Eduardo Luiz Pareto Ciclo de Vida da Classe Activity Quando o Usuário acessa a aplicação, navega pelas opções, sai ou retorna para a mesma, as atividades que compõem passam por uma série de estados do ciclo de vida. Sempre que a Activity muda de estado, o Android aciona um método (callback) correspondente. Assim que o usuário inicia uma aplicação, o Android cria a atividade principal que está declarada no AndroidManifest.xml e invoca o método onCreate. É neste método que atribuímos qual leiaute será utilizado na atividade e também são iniciadas as variáveis e recursos necessários. Programação para Dispositivos Móveis AULA 05: Entendendo a classe Activity Prof. Eduardo Luiz Pareto AndroidManifest <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android=http://schemas.android.com/apk/res/android package="com.example.eduardo.adivinha4application" > <application android:allowBackup="true“ android:icon="@mipmap/ic_launcher“ android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".AdivinhaActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest> Programação para Dispositivos Móveis AULA 05: Entendendo a classe Activity Prof. Eduardo Luiz Pareto Ciclo de Vida da Classe Activity Programação para Dispositivos Móveis AULA 05: Entendendo a classe Activity Prof. Eduardo Luiz Pareto Ciclo de Vida: Os Métodos onCreate( ) onStart( ) onResume( ) onPause( ) onStop( ) onRestart( ) onDestroy( ) Programação para Dispositivos Móveis AULA 05: Entendendo a classe Activity Prof. Eduardo Luiz Pareto Ciclo de Vida: Os Métodos onCreate ( ) Executado quando uma Activity é criada. Geralmente é o método responsável por carregar os layouts (XML) e outras operações de inicialização. Só é executado 1 vez durante o Clico de Vida da Activity. Programação para Dispositivos Móveis AULA 05: Entendendo a classe Activity Prof. Eduardo Luiz Pareto Ciclo de Vida: Os Métodos onStart ( ) É chamado logo depois do onCreate() ou quando a Activity que estava em background volta a ter foco. (Depois dela temos onResume, caso a Activity esteja em primeiro plano ou onStop se ela não for visível). Programação para Dispositivos Móveis AULA 05: Entendendo a classe Activity Prof. Eduardo Luiz Pareto Ciclo de Vida: Os Métodos onResume ( ) Método chamado quando a Activity vai começar a interagir com o usuário (ou retoma foco). Sempre vem depois do onStart, caso a Activity tenha sido iniciada ou se ela estava parada (onStop), ou pode ocorrer direto (vindo depois do onPause) caso a Activity, que não estava em primeiro plano, mas ainda visível, volte para o topo. Programação para Dispositivos Móveis AULA 05: Entendendo a classe Activity Prof. Eduardo Luiz Pareto Ciclo de Vida: Os Métodos onPause ( ) Ocorre logo antes da Activity perder o foco, ou seja, quando ir para o Background, mas não foi (ainda) destruída. Geralmente é usada para parar animações e recursos que estejam consumindo processamento e persistir dados não salvos, desta forma, se (por falta de recursos) a Activity for destruída, não perderemos essas informações. Tenha em mente que a Activity que está tomando o foco não será criada até que esse método retorne, sendo assim, o código aqui também deve ser leve. Programação para Dispositivos Móveis AULA 05: Entendendo a classe Activity Prof. Eduardo Luiz Pareto Ciclo de Vida: Os Métodos onStop ( ) É invocado no momento em que o utilizador sai de uma Activity ou muda de aplicação e esta deixa de estar visível para ele. A invocação deste método é também um indicador de que o utilizador não voltara mais e é preciso libertar todos recursos que não serão mais necessários. Note que na figura acima existe uma certa sequência de invocação dos método pelo que para que seja invocado o onStop, terá de ser invocado primeiro o onPause. Programação para Dispositivos Móveis AULA 05: Entendendo a classe Activity Prof. Eduardo Luiz Pareto Ciclo de Vida: Os Métodos onRestart ( ) O método onRestart é invocado quando voltamos a abrir a Activity de uma app após ter sido “escondida” antes. Um exemplo comum de invocação do onRestart, e quando voltamos a uma activity utilizando a janela de apps recentes(“Recent apps” ) que mostra quais as activities mais recentes tínhamos abertas. Segundo a documentação, maior parte das aplicacoes nao precisam re-escrever o metodo onRestart e logo apos a sua invocacao, o metodo onStart é invocado. Programação para Dispositivos Móveis AULA 05: Entendendo a classe Activity Prof. Eduardo Luiz Pareto Ciclo de Vida: Os Métodos onDestroy ( ) Finalmente, o ultimo método do ciclo de vida de uma Activity e o onDestroy(). O onDestroy é invocado naquele último suspiro da activity e nesse momento a Activity é destruída na memoria. O onDestroy() é normalmente invocado nos casos em que uma activity é parada por muito tempo e por uma questão de uma boa gestão de recursos, o sistema elimina a activity da memoria para a utilização por outros processos. O onDestroy() também e invocado caso exista uma instrução que explicitamente invoque o método finish() para terminar com a Activity. Programação para Dispositivos Móveis AULA 05: Entendendo a classe Activity Prof. Eduardo Luiz Pareto Ciclo de Vida: Os Métodos Observação Os métodos onDestroy, onStop e onPause (esse último apenas antes da versão HONEYCOMB) são marcados na documentação como “killable”, ou seja, nesses estados a aplicação pode ser destruída pelo sistema sem executar nenhuma linha de código, sendo assim, use o método onPause para gravar todos os dados que devem ser persistidos, caso a aplicação seja destruída. Além disso, o método onSaveInstanceState(Bundle) é chamado antes desses casos para que alguma informação de estado (Bundle) seja guardada e possa ser resguardada usando o método onCreate(Bundle), caso a Activity retorne. É um pouco complicado, mas você vai entender mais na prática. Enquanto isso, a leitura da documentação é válida. Programação para Dispositivos Móveis AULA 05: Entendendo a classe Activity Prof. Eduardo Luiz Pareto Exemplo public class AdivActivity extends AppCompatActivity { private EditText editText; private Button btnEnvia; private Jogo jogo; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_adiv); editText = (EditText)findViewById(R.id.editText); btnEnvia = (Button)findViewById(R.id.btnAvalia); jogo = new Jogo(); jogo.iniciaJogo(); btnEnvia.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { avaliaValor(); }}); } onCreate() Programação para Dispositivos Móveis AULA 05: Entendendo a classe Activity Prof. Eduardo Luiz Pareto Logging A classe Log Registra no log o que está ocorrendo na aplicação Programação para Dispositivos Móveis AULA 05: Entendendo a classe Activity Prof. Eduardo Luiz Pareto Depurando LogCat Uma janela que nos detalha de uma forma prática todos as tarefas executadas no sistema Android, para isto clique no menu “Window/Show View/Other” e selecione o item “LogCat”. Programação para Dispositivos Móveis AULA 05: Entendendo a classe Activity Prof. Eduardo Luiz Pareto Exemplo public class CiclodeVidaActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Log.i(“Programa Adiv","Método OnCreate()");} @Override protected void onStart() { super.onStart(); Log.i(" Programa Adiv ","Método OnStart()");} @Override protected void onResume() { super.onResume(); Log.i(" Programa Adiv ","Método OnResume()"); } Log Programação para Dispositivos Móveis AULA 05: Entendendo a classe Activity Prof. Eduardo Luiz Pareto Exemplo (Cont) @Override protected void onPause() { super.onPause(); Log.i(" Programa Adiv ","Método OnPause()");} @Override protected void onStop() { super.onStop(); Log.i(" Programa Adiv ","Método OnStop()");} @Override protected void onDestroy() { super.onDestroy(); Log.i(" Programa Adiv ","Método OnDestroy()");} } Log Programação para Dispositivos Móveis AULA 05: Entendendo a classe Activity Prof. Eduardo Luiz Pareto Depurando LogCat Programação para Dispositivos Móveis AULA 05: Entendendo a classe Activity Prof. Eduardo Luiz Pareto Depurando LogCat Programação para Dispositivos Móveis AULA 05: Entendendo a classe Activity Prof. Eduardo Luiz Pareto Exercício Jogo Adivinhe um Número Implemente um jogo onde o usuário deverá adivinhar o número sorteado pelo dispositivo móvel entre 1 e 100. Quando o usuário acerta, é informado o número de tentativas gastas. Para ajudar o jogador, toda vez que o usuário erra, o jogo deverá dizer uma pista, se o número é maior ou menor que o número digitado. Programação para Dispositivos Móveis AULA 05: Entendendo a classe Activity Prof. Eduardo Luiz Pareto Exercício – Diagrama de Estados Início do Jogo Devemos sortear o número e zerar as tentativas Solicitar um número Apresentar Avaliação Jogando Jogador Acertou Apresenta o número de tentativas Avaliar o Número Programação para Dispositivos Móveis AULA 05: Entendendo a classe Activity Prof. Eduardo Luiz Pareto Exercício Programação para Dispositivos Móveis AULA 05: Entendendo a classe Activity Prof. Eduardo Luiz Pareto
Compartilhar