Service Android

3 respostas
pedroroxd

Pessoal...
Estou com problema para parar um Serviço no Android...

Ele é definico no XML assim:
<service android:name=".model.ServiceTimer">
	      <intent-filter>
	      <action android:name="INICIAR_SERVICO_NOWWW" />
	      <category android:name="android.intent.category.DEFAULT" />
	      </intent-filter>
      </service>
Eu preciso começar ele em uma Activity e terminar EM OUTRA Activity Eu começo o serviço, e imediatamente eu já vou para outra acvity:
startService(StaticIntent.getInstance());
			 startActivity(new Intent(Login.this, RecordAndSend.class).putExtra("nomeusuario", _nomeus));
Na outra activity quando quero parar eu faço assim:
stopService(StaticIntent.getInstance());
Essa é minha classe StaticIntent:
import android.content.Intent;

public class StaticIntent {
	public static Intent inten = new Intent("INICIAR_SERVICO_NOWWW");
    public static Intent getInstance() {
        return inten;
     }
	
}
No meu service tem isso:
@Override
	public void onDestroy() {
		super.onDestroy();
		stopSelf();
		Log.i(CATEGORIA, "PAROU!!");
	}

Quando eu mando parar, ele exibe essa mensagem ("PAROU!!")... Mas continua realizando as funções (exibindo mensagens)...

Ele está assim:
@Override
	public void onStart(Intent intent, final int startId){
		
		super.onStart(intent, startId);
		
		Log.i(CATEGORIA, "Comecando");	
		
		_timer.scheduleAtFixedRate(new TimerTask() {
			@Override
			public void run() {
				Log.i(CATEGORIA, "Executando Tarefa");
			}
		}, 0, 20000);
	}

3 Respostas

pedroroxd

Consegui…
Achei que ele estava criando de alguma forma uma outra instância do serviço, mas na realidade não estava, o serviço não é destruido…

Foi só dar um _timer.cancel();

V

pedroroxd,

Apesar de a dúvida estar resolvida, a pergunta não fez muito sentido.
As classes Service e Activity não estão relacionadas. O serviço roda em background, embora nada impeça que uma activity chame um serviço através de uma intent e este chame uma activity ao final de sua execução.
Entretanto o funcionamento dos dois são independentes. O serviço não começa em uma Activity e termina na mesma ou em outra . Ele é assíncrono. A melhor maneira de visualizá-lo é como uma thread gerenciada pelo sistema operacional.

pedroroxd

Vicento Corleone:

embora nada impeça que uma activity chame um serviço através de uma intent e este chame uma activity ao final de sua execução.
Entretanto o funcionamento dos dois são independentes. O serviço não começa em uma Activity e termina na mesma ou em outra .

Realmente… Mas eu precisava Começar e Parar o serviço dentro de uma Activity…
Vou ser mais claro:

O usuário faz o Login. Começa um service (pro usuário dele)… Contiua por todo tempo…
Usuário faz logout. Necessito terminar o serviço

Criado 15 de fevereiro de 2011
Ultima resposta 22 de fev. de 2011
Respostas 3
Participantes 2