segunda-feira, 9 de julho de 2018

Rumo ao Certificado Android: Services

Então chegamos ao nosso terceiro dos quatros componentes principais do Android: os serviços. Você deve criar um serviço para tarefas que precisam ser executados, mas que não interagem com o usuário diretamente, geralmente sendo executados em plano de fundo. Geralmente, uma atividade pode iniciar um serviço, e este serviço continuará rodando mesmo depois da atividade, ou até mesmo o aplicativo ser fechado.

Como iniciar um serviço
Existem 3 formas de executar um serviço:
1. Iniciar de forma explícita: a partir de um contexto, executar o método startService(). A atividade mandará o comando para executar o serviço, mas não espere retorno direto do mesmo com a atividade; Este será o foco do tutorial de hoje.

2. Programar a execução: Os serviços que são programados para ser executados são chamados de Job Services, e utiliza-se de um Job Scheduler para ser executado;

3. Atrelado com Atividade: semelhante ao primeiro, com a diferença que o mesmo pode se comunicar com a atividade que o iniciou;

A imagem abaixo mostra o ciclo de vida de um serviço para os casos 1 e 3:


Ok, mas como iniciamos os serviços?
Para o caso 1, nós utilizamos de um Intent, e de forma muito semelhante de como usamos para chamar outra atividade, nós usaremos um Intent para chamar um serviço. Observe o código abaixo:

Intent myIntent  = new Intent(this, MyIntentService.class);
startService(myIntent);

Supondo que o código acima esteja em um método de uma Activity e que exista uma classe chamada MyIntentService, é assim que iniciaremos um serviço.

Criando a classe Serviço
Um serviço iniciado por Intent irá herdar a classe IntentService. Nela devemos sobrescrever o método onHandleIntent e colocar nela a lógica a ser executado. Repare que o mesmo método recebe um Intent como parâmetro, que é o mesmo passado pelo método startService.

public class MyIntentService extends IntentService{

  @Override
  protected void onHandleIntent(Intent intent){
     //Aqui que você colocará a lógica do serviço
  }
}

Lembrando que assim como Activity e Content Provider, os Serviços devem ser registrado no manifesto do Android.



Nenhum comentário:

Postar um comentário