2011-11-08 22 views
5

Tengo un servicio que inicia un hilo durante onCreate(). El hilo está monitoreando el hardware (IOIO) y terminará una vez que se desconecte, por lo que es esencialmente un ciclo infinito. La detención del servicio de una actividad funciona bien y el hilo también se detiene (terminó en onDestory()).Deteniendo un servicio de Android dentro de un hilo

Mi problema es que si el hilo muere (por ejemplo debido a una excepción) es posible detener el servicio que lo engendró.

He intentado usar stopSelf() desde el código del subproceso, pero el servicio no se detiene.

Gracias ps mi primera publicación, por favor disculpe las convenciones faltantes que debería haber seguido.

Respuesta

3

Creo que lo que quiera aquí podría ser utilizar un Handler. Esencialmente, cree un controlador para su Sevrice (asegúrese de que sea final para que pueda usar en todos los hilos). Luego en su otro hilo, llame al:

myServiceHandler.post(new Runnable(){ 
    public void run(){ 
    stopSelf(); 
    } 
} 
+0

impresionante, por lo que funcionó? –

+0

Gracias exactamente lo que se necesitaba – user1035795

+0

Tengo el mismo problema y probé esta solución. Sin embargo, puedo ver que el stopSelf() se ejecuta desde el hilo msin ... pero no pasa nada. Y luego el servicio aún responde a los intentos. ¿Cualquier pista? –

0

¿Qué le parece guardar el Intento del servicio y detenerlo directamente? En el servicio:

private Intent thisIntent; 

public int onStartCommand (Intent intent, int flags, int startId) { 

    thisIntent = intent; 

En el hilo dentro del servicio:

stopService(thisIntent); 
Cuestiones relacionadas