2011-11-08 17 views
5

Ho un servizio che avvia una discussione durante onCreate(). Il thread sta monitorando l'hardware (IOIO) e terminerà una volta disconnesso, quindi è un loop infinito. L'interruzione del servizio da un'attività funziona correttamente e il thread si arresta anche (terminato in onDestory()).Arresto di un servizio Android da una discussione

Il mio problema è che se il thread muore (ad esempio a causa di un'eccezione) è possibile interrompere il servizio che lo ha generato.

Ho provato a utilizzare stopSelf() all'interno del codice del thread ma il servizio non si interrompe.

Grazie ps il mio primo post quindi per favore scusate eventuali convenzioni mancanti che avrei dovuto seguire.

risposta

3

Penso che quello che vuoi qui potrebbe essere quello di utilizzare un Handler. Eseentially, crea un gestore per il tuo Sevrice (assicurati che sia definitivo in modo da poterlo utilizzare su tutti i thread). Quindi nel tuo altro thread, chiama:

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

impressionante, quindi lavorato? –

+0

Grazie solo a ciò che era necessario – user1035795

+0

Ho lo stesso problema e ho provato questa soluzione. Tuttavia, posso vedere che stopSelf() viene eseguito dal thread msin ... ma non succede nulla. E in seguito il servizio risponde ancora alle intenzioni. Qualche indizio? –

0

Come archiviare l'Intento del servizio e fermarlo direttamente? Nel servizio:

private Intent thisIntent; 

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

    thisIntent = intent; 

Nella filettatura all'interno del servizio:

stopService(thisIntent); 
Problemi correlati