2011-04-23 30 views
7

Necesito ejecutar un servicio en un hilo separado. Esto se debe a que accede a un servicio web que puede tomar de 5 a 10 segundos y no quiero obtener ANR. También seré vinculante para este servicio. He encontrado una manera de lanzar el servicio en un hilo separado con algo como:¿Cómo puedo ejecutar un servicio en un hilo separado?

Thread t = new Thread(new Runnable() { 

      public void run() { 
       //Launch and/or Bind to service here 
      } 
     }); 
     t.start(); 

Sin embargo creo que esto sólo se ejecuta el código a partir de un nuevo hilo, mientras que el propio servicio se ejecuta en el hilo principal. Entonces, ¿cómo ejecutaría realmente todo el código del servicio en otro hilo?

Gracias de antemano

Respuesta

7

Puede utilizar un IntentService

IntentService es una clase base para servicios que manejan peticiones asíncronas (expresadas como Intentos) en demanda. Los clientes envían solicitudes a través de startService (Intent) llamadas; el servicio se pone en marcha cuando sea necesario, se encarga de cada Intención a su vez el uso de un trabajador hilo, y se detiene a sí mismo cuando se ejecuta sin trabajo

http://developer.android.com/reference/android/app/IntentService.html

+3

Gracias por la rápida respuesta que trabajaría para este guión. Sin embargo, también tengo otro servicio que monitorea el GPS cada 200 ms y no quiero que disminuya la velocidad del hilo principal. Como este servicio se basa en la invocación de onLocationChanged, no quiero que muera como lo será el servicio de intento. ¿Cómo podría ejecutar esto es un hilo separado? ¿O sería una pregunta separada? – RomanP

+0

Me salvó el día ... Mayor conocimiento Servicio vs Servicio de intenciones ... –

Cuestiones relacionadas