2012-09-21 17 views
6

El cliente puede llamar al servicio de vinculación/desvinculación original utilizando bindService()/unbindService().Preguntas sobre el servicio Android sobre bind/unbind?

Mi pregunta es cómo desvincular el servicio en el lado del servicio, no se llama unbindService() por cliente, probablemente debería llamarlo unbindClient.

Creo que el servicio debe saber qué clientes están vinculados a él, entonces ¿hay alguna manera de decirle al servicio que desvincula a un cliente específico?

porque sólo escribir el servicio, y yo do't saber si el cliente llama unbindService() correctamente, así que tengo esta pregunta ..

+1

Puede haber algo que puedas hacer para reestructurar tus clases. ¿Por qué necesita saber qué cliente se desconectó del servicio? –

+0

como el programa normal de c/s, quiero hacer un trabajo de reciclaje subyacente cuando un cliente se desconecta, ¿tiene alguna idea mejor? – kwf2030

+0

¿Puedes llamarlo desde la 'Actividad' que se desconectó del' Servicio' en su lugar? Hay un método 'onDestroy()' para actividades, o 'onPause()' o 'onStop()'. Es posible que puedas ponerlo allí. –

Respuesta

0

Si usted tiene acceso a código de cliente -

Puede llamar startService() desde el cliente - que iniciará el servicio (y no terminará el Service al salir del Activity - ya que solo stopService() lo cerrará).

Y también, el cliente podría llamar bindService() - si quieren realizar la interacción Activity - Service.

Al salir/desatar el cliente, el servicio seguirá funcionando desde startService() se llamaba - Service puede realizar otras operaciones y luego llamar stopService() que destruirá a sí mismo.

-1

Un servicio no se puede desvincular. Puede hacer que un servicio iniciado pare con stopSelf().

El sistema operativo realiza un seguimiento de todos los enlaces y desvinculaciones entre bastidores. No tiene que preocuparse por el reciclaje de objetos, Android lo hace por usted.

+0

Si crees que la respuesta es engañosa. Por favor, señale qué cree que está mal con eso. – Wesam

0

Si simplemente desea limitar la funcionalidad que devuelve el servicio, una vez que se inicia y se llama a bindService(). Puede registrar un cliente y anular el registro cuando haya finalizado el servicio. De esta manera, su servicio no se vinculará cualquier impacto. Esto escogí del ejemplo Remote Messenger Service en el sitio web de Android