sexta-feira, 17 de abril de 2015

Ciclo de vida de um APP Android

Olá a todos. Este é um post muito, muito importante. Aqui falaremos sobre algo cujo entendimento é de fundamental importância para quem pretende desenvolver para Android de maneira séria.


O assunto é: O ciclo de vida de um APP Android.


O ciclo de vida de um app Android



A imagem acima ilustra as fases pelas quais um aplicativo Android pode transitar ao longo de sua vida, desde o momento que o usuário clica no ícone para lançá-lo, até o momento em que ele é finalizado.

onCreate()


É o método da Activity que será executado na abertura. É o primeiro a ser executado. É aqui onde normalmente associamos à variáveis locais os elementos visuais que definimos nos arquivos de layout xml, de forma que possamos manipulá-los. É também onde definimos os "listeners" desses elementos, indicando à Activity o que fazer quando o usuário clicar em algo na tela.


onStart()

O método onStart() é chamado logo após o onCreate(). Também é executado caso a activity volte a ter foco, ou seja, torne-se visível. Pode ser útil caso o app precise recriar algo que foi liberado ao sair da activity.



onResume()

Este método é análogo ao onStart(), sendo chamado quando o usuário começa a interagir com a activity. No entanto, onStart() só seria chamado caso a activity não estivesse mais visível. onResume(), por outro lado, será chamado se a activity estiver apenas retomando o foco.


onPause()

Método muito importante, que é chamado exatamente quando uma activity perde o foco. Em aplicações que armazenam dados localmente e que os sincronizam de tempos em tempos com um servidor remoto, é exatamente neste momento que se deve fazer o sincronismo. Lembrando, é claro, que todas as activities possuem onPause(), portanto, essa sincronia a que nos referimos é no onPause() da activity principal (em outras palavras, quando se minimiza o app). Quando este método onPause() é executado, a activity ainda está presente na memória, apenas não está com o foco. Veja que a activity pode ainda estar visível, mas com outra por cima.



onStop()

O método onStop() é chamado quando a activity não estiver mais visível, ou seja, quando estiver completamente sobreposta por outra.


onDestroy()

Este é o último método que é executado em uma activity antes que ela seja destruída. A partir deste momento, a activity é encerrada e não pode mais ser reativada.


onRestart()

Método chamado quando a activity é reiniciada, após ter sido interrompida em algum momento. É executado quando uma activity volta a ter foco, logo antes do método onStart().



Para ilustrar toda esta teoria, vamos abrir nosso projeto "meuPrimeiroApp" e inicialmente comentar no método onCreate() as duas linhas de envio de SMS. Depois vamos acrescentar algumas saídas de texto na tela do celular em cada um dos métodos do ciclo de vida, para visualizarmos o funcionamento do processo. Utilizaremos o comando "Toast", cuja função é mostrar uma mensagem de texto simples na tela do aparelho.


O código deve ficar assim:


package com.example.meuprimeiroapp;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.telephony.SmsManager;
import android.view.Menu;
import android.widget.Toast;

public class MainActivity extends Activity
{

   @Override
   protected void onCreate(Bundle savedInstanceState)
   {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);

      // Envia SMS
      //SmsManager smsManager=SmsManager.getDefault();
      //smsManager.sendTextMessage("99999-9999", null, "Este texto foi enviado por SMS", null, null);
      
      Toast.makeText(getApplicationContext(), "Passei no onCreate()", Toast.LENGTH_SHORT).show();     
   }

   @Override
   protected void onStart()
   {
      super.onStart();
      Toast.makeText(getApplicationContext(), "Passei no onStart()", Toast.LENGTH_SHORT).show();
   }

   @Override
   protected void onResume()
   {
      super.onResume();
      Toast.makeText(getApplicationContext(), "Passei no onResume()", Toast.LENGTH_SHORT).show();
   }
   
   @Override
   protected void onPause()
   {
      super.onPause();
      Toast.makeText(getApplicationContext(), "Passei no onPause()", Toast.LENGTH_SHORT).show();
   }
   
   @Override
   protected void onStop()
   {
      super.onStop();
      Toast.makeText(getApplicationContext(), "Passei no onStop()", Toast.LENGTH_SHORT).show();
   }

   @Override
   protected void onDestroy()
   {
      super.onDestroy();
      Toast.makeText(getApplicationContext(), "Passei no onDestroy()", Toast.LENGTH_SHORT).show();
   }

   @Override
   protected void onRestart()
   {
      super.onRestart();
      Toast.makeText(getApplicationContext(), "Passei no onRestart()", Toast.LENGTH_SHORT).show();
   }
   
   @Override
   public boolean onCreateOptionsMenu(Menu menu)
   {
      // Inflate the menu; this adds items to the action bar if it is present.
      getMenuInflater().inflate(R.menu.main, menu);

      // O finish() aqui foi colocado apenas para demonstrar que o método onDestroy() será chamado.
      // Ele faz com que a activity seja encerrada programaticamente.

      finish();

      return true;
   }

}


Copie e cole o código acima, substituindo integralmente o do arquivo MainActivity.java. Grave com CTRL+S e então compile o projeto. Depois experimente, pelo celular: minimizar a aplicação, fechá-la, mudar o foco, retornar a ela e assim por diante. Verá os métodos desses eventos ocorrendo em tempo de execução. Clique no botão de menu (físico) do Android para ver o método onDestroy() sendo chamado (acrescentamos um comando "finish()", o que faz com que a activity seja encerrada programaticamente).

Por hora é só. Abraços e até a próxima!


Nenhum comentário:

Postar um comentário