2011-11-26 11 views
59

Existen algunas condiciones en las que se podría intentar iniciar mi servicio cuando no debería. En casos como este, ¿es malo llamar al stopSelf() mientras está dentro de un método onStartCommand()? Si es así, ¿cuál es la mejor manera de manejar una situación así? Cualquier recurso será muy apreciado.¿Puedo llamar a stopSelf() en Service.onStartCommand?

Respuesta

73

¿Es malo llamar a stopSelf() mientras está dentro de un método onStartCommand()?

Fuera de la cabeza, no puedo pensar por qué eso sería un problema.

stopSelf(), como muchas cosas en Android, no tiene efecto inmediato. Coloca un mensaje en la cola de mensajes procesada por el hilo principal de la aplicación. El trabajo real de detener el servicio ni siquiera comenzará hasta algún momento después de que onStartCommand() haya regresado.

+2

Pensé que no, pero no estaba completamente seguro del funcionamiento interno de la clase de servicio y llamé a una función que evita que se inicie incluso antes de que termine algún evento relacionado parece que podría dar lugar a un comportamiento no deseado dependiendo sobre cómo fue diseñado. –

+8

@SpencerRuport: 'stopSelf()', como muchas cosas en Android, no tiene efecto inmediato. Coloca un mensaje en la cola de mensajes procesada por el hilo principal de la aplicación. El trabajo real de detener el servicio ni siquiera comenzará hasta algún momento después de que 'onStartCommand()' haya regresado. – CommonsWare

+3

Como pregunta de seguimiento, ¿cuál sería el valor de retorno apropiado al haber llamado 'stopSelf()'? –

Cuestiones relacionadas