No ambiente Android, temos uma ferramenta interessante para executar aplicações ou processos em segundo plano, que são os Serviços. Neste artigo iremos ver como esse mecanismo funciona e como implementa-lo em sua aplicação.
Como Serviços funcionam
Algumas vezes, precisamos que uma aplicação rode em segundo plano em nosso dispositivo, esperando por alguma mudança em seu sistema, ou talvez queremos rodar uma aplicação através de uma Activity normal, e uma “uma peça de código” sendo executada em segundo plano que checa a Internet, mensagens SMS recebidas ou outro eventos.
Para esses casos, os Services do Android estão disponiveis. Eles são classes sem interface com o usuário (Activity são classes com uma interface), assim elas podem ser executadas em segundo plano, em uma thread separada e você pode inicia-lo ou para-lo apartir da Activity.
Vamos analisar um exemplo clássico de quando um Service seria usado: em um tocador de audio. Imagine que você tem um tocador de mp3 (baixado do Android MArket, feito por você ou o tocador padrão do dispositivo), você pode selecionar artista, albuns, músicas… ao começar a tocar uma música, e você quer voltar a sua tela inicial para iniciar outra atividade, você pode fazer isso, mas a música selecionada continua tocando…
Um caso menos clássico. Você possui um leitor de RSS, com uma lista que inclui todos os novos artigos de um blog conhecido. Um Service busca por atualizações nessa lista via site, e então atualiza a tela do leitor com as novas informações. Tudo enquanto é executado em segundo plano.
Implementando um Serviço
<service android:name=".subpackagename.ServiceName"/>
No código, precisamos criar uma classe baseada na classe base “Service”
public class ServiceName extends Service {
private Timer timer = new Timer();
protected void onCreate() {
super.onCreate();
startservice();
}
}
Essa é a maneira de criar um Service. Aqui, crie um Times, que a cada X segundos chamam um metódo especifico. Isso é executado até que o Service seja encerrado. Isso pode ser usado, por exemplo, para checar atualizações em um feed RSS. A classe Time é usada no metódo startservice dessa forma:
private void startservice() {
timer.scheduleAtFixedRate( new TimerTask() {
public void run() {
//Do whatever you want to do every “INTERVAL”
}
}, 0, INTERVAL);
; }
Onde INTERVAL é o tempo entre as execuções do metódo.
Para encerrar o Service, podemos parar o timer, por exemplo, quando a aplicaçõa é destruida (com onDestroy() )
private void stopservice() {
if (timer != null){
timer.cancel();
}
}
Fonte: http://www.brighthub.com/mobile/google-android/articles/34861.aspx#ixzz144RSYEjd