2009-06-09 19 views
23

Estoy jugando con los servicios de Android, y he encontrado que ServiceConnection.onServiceConnected() se llama bastante predecible cuando me ate a un servicio.¿Cuándo se llama a ServiceConnection.onServiceDisconnected()?

Sin embargo, mi método onServiceDisconnected() parece que nunca se invoca, incluso después de que el VM muere.

He registrado mensajes de depuración en el servicio y demuestro que todos los hilos se han apagado, etc. Sé que los servicios se implementan como procesos; ¿Hay hilos que no sé que están impidiendo que el proceso salga?

Respuesta

24

Ocurre tras un bloqueo del servicio remoto. Entonces, si un servicio que se ejecuta en un proceso diferente al de su cliente falla en alguna excepción, usted pierde la conexión y recibe la devolución de llamada.

+2

¿Es solo en crash? Esperaría que se llamara cuando llame 'unbindService()' y el servicio se cierra porque no hay más clientes. – sehugg

+3

de acuerdo con la documentación, solo ocurre en 'desvinculación inesperada del servicio', así que sí, está solo en crash, y no en unbindService() – reflog

+2

Entonces, ¿cómo puede saber si realmente puede volver a enlazar al servicio? O mejor, ¿cómo vuelves a vincular? ¿Uing un nuevo ServiceConnection? – Snicolas

Cuestiones relacionadas