2012-01-03 23 views
7

Qualcuno potrebbe dirmi come fermare intentservice in Android?Come interrompere intentservice in Android?

Se si utilizza stopservice per interrompere un servizio di intents, non funziona.

Ho consultato il sito Web, ma nessuno ha dato una risposta chiara a questa domanda.

risposta

5

Provare a chiamare stopSelf() dall'interno del servizio. Il documentation dice che alcuni processi potrebbero richiedere molto tempo per essere completati, quindi è probabile che il servizio stia aspettando che si fermino. Probabilmente dovresti esaminarlo. Una volta completate tutte le richieste, il servizio si arresta.

+0

Posso interrompere da un'attività? – user1127497

+1

Come ho già detto, se 'stopService' non aiuta, un processo lo sta effettuando. 'protected abstract void onHandleIntent (Intento intenzionale) Da: API Livello 3 Questo metodo viene richiamato sul thread di lavoro con una richiesta di elaborazione. Solo un intento viene elaborato alla volta, ma l'elaborazione avviene su un thread di lavoro eseguito indipendentemente dalla logica dell'applicazione. Quindi, se questo codice impiega molto tempo, terrà altre richieste allo stesso IntentService, ma non reggerà altro. Quando tutte le richieste sono state gestite, IntentService si arresta automaticamente, quindi non dovresti chiamare stopSelf(). ' –

+2

Vuoi dire se chiamo stopService, un intent verrà inviato a intentservice. Se intentservice ha già diversi intenti sulla coda, "stopervice intent" non sarà gestito fino a quando non verranno gestiti tali scopi? – user1127497

5

Lo IntentService è stato creato per arrestarsi quando l'ultimo intento viene gestito da onHandleIntent(Intent) - ad esempio, non è necessario interromperlo, ma si arresta automaticamente al termine.

1

Secondo lo documentation Android interrompe il servizio dopo che tutte le richieste di avvio sono state gestite, quindi non è necessario chiamare stopSelf().

1

Risposta in ritardo in caso qualcuno abbia lo stesso problema. Se chiami <yourContext>.stopService(intent) dove intent è lo stesso oggetto di utilizzato per avviare il servizio, funzionerà.

1

Un IntentService è progettato per arrestarsi solo quando tutte le richieste presenti nella coda di lavoro sono state gestite. Come per i documenti, classe IntentService "Interrompe il servizio dopo che tutte le richieste di avvio sono state gestite, quindi non è necessario call stopSelf() "

Problemi correlati