[RESOLVIDO] Dúvidas sobre Service

E aí pessoal … bom, já li algumas vezes o tutorial sobre Services do developer.android.com e talvez o sono não me ajudou a compreender tudo.

A primeira duvida que ficou é se um Service vai “viver” independente da aplicação, ou se a aplicação for finalizada o Service também será finalizado.

Por exemplo, tenho uma aplicação onde no OnCreate da Activity principal eu inicio um Service teste.

No onCreate do Service eu crio uma Thread assim…

// Cria a thread de processamento.
Thread lo_thread =  new Thread
                    (
                         new Runnable()
                         {
                              @Override
                              public void run()
                              {
                                   //Processamento do serviço.
                                   Processar();
                              }
                         },
                         "ServiceThread"
                    );
		
// Executa.
lo_thread.start();

Se eu finalizar a aplicação, esta Thread também será destruída ?

Outra dúvida seria como fazer então pra eu ter um Service que teoricamente “nunca é destruído”, ou seja, inicia no boot do sistema e “ninguém” o finaliza ?

E ai pessoal … alguém pode me ajudar ??

É possível criar um Service independente que inicia no boot do sistema ??

não sou especialista em Services, mas o que eu sei é que se vc inicia o service de dentro de uma activity, mesmo rodando o seu próprio processo, separado da aplicação, ele ainda está ligado ao ciclo de vida da aplicação, e se ela for fechada, o service também será finalizado.

nas versões antigas tinha uma Intent que o sistema lançava, e vc só precisava fazer um BroadcastReceiver para iniciar o seu Service logo após o boot, acho que era:
android.intent.action.BOOT_COMPLETED

aí vc implementa o seu BroadcastReceiver e checa por essa intent e inicia o serviço

um excelente tutorial sobre services nesse site, da uma olhada e ve se te ajuda:

http://www.vogella.com/articles/AndroidServices/article.html#service

Boa tarde.

Sobre services que é declarado no arquivo manifest pode finalizar a aplicação que ele fica rodando sempre.

<service android:name="WordService" android:process=":my_process" android:icon="@drawable/icon" android:label="@string/service_name" > </service>

Agora se tu for no Aplications do android e finalizar na mão lá no Runnig services ai é outra coisa.

Cara sobre iniciar um serviço dentro de uma Thread nem precisa na boa.
Services no android continua funcionando mesmo que não realize nenhuma operação.

Inicia ele assim:

Sobre isso.

Outra dúvida seria como fazer então pra eu ter um Service que teoricamente “nunca é destruído”, ou seja, inicia no boot do sistema e “ninguém” o finaliza ?
Pega a classse que faz isso e coloque para sua realidade:

[code]
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;

/**

  • Classe que realiza: Inicialização do aplicativo com o sistema Android.
  • @author renato.silva

*/
public class ServiceIniSistema extends BroadcastReceiver{

/**
 * Metodo que é executado primeiro assim que o Android é iniciado.
 */
@Override
public void onReceive(Context context, Intent intent) {

	if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) {

		Intent startServiceIntent = new Intent(context, SuaClasseDeServiço.class);
		
		context.startService(startServiceIntent);
	}
}

}[/code]

Otimo tuto

http://marakana.com/forums/android/examples/60.html

[quote=rodfs]E aí pessoal … bom, já li algumas vezes o tutorial sobre Services do developer.android.com e talvez o sono não me ajudou a compreender tudo.

A primeira duvida que ficou é se um Service vai “viver” independente da aplicação, ou se a aplicação for finalizada o Service também será finalizado.

Por exemplo, tenho uma aplicação onde no OnCreate da Activity principal eu inicio um Service teste.

No onCreate do Service eu crio uma Thread assim…

// Cria a thread de processamento.
Thread lo_thread =  new Thread
                    (
                         new Runnable()
                         {
                              @Override
                              public void run()
                              {
                                   //Processamento do serviço.
                                   Processar();
                              }
                         },
                         "ServiceThread"
                    );
		
// Executa.
lo_thread.start();

Se eu finalizar a aplicação, esta Thread também será destruída ?

Outra dúvida seria como fazer então pra eu ter um Service que teoricamente “nunca é destruído”, ou seja, inicia no boot do sistema e “ninguém” o finaliza ?

[/quote]

Só para finalizar o tópico, eu utilizei um BroadCastReceiver com a action android.intent.action.BOOT_COMPLETED e funcionou para iniciar a aplicação ao ligar o device.

Utilizei também a definição do processo no manifest, como estava na última resposta, e não funcionou bem como eu esperava, mas está bom para a minha solução.

Tópico resolvido.