2012-02-14 27 views
12

Estoy creando una aplicación que se conecta a un servidor XMPP en Android. Quiero mantener la conexión hasta que el usuario cierre la sesión.¿Servicio o servicio vinculado?

¿Debo utilizar un servicio regular o un servicio encuadernado para mantener la conexión?

Cualquier consejo, consejo e información útil son bienvenidos.

Respuesta

3

Un servicio vinculado es el servidor en una interfaz cliente-servidor. Un servicio enlazado permite que los componentes (como las actividades) se vinculen al servicio, envíen solicitudes, reciban respuestas e incluso realicen comunicaciones entre procesos (IPC). Un servicio enlazado normalmente solo vive mientras sirve otro componente de aplicación y no se ejecuta en segundo plano indefinidamente.

Si existe todo el código en una actividad del usuario conectado a cierre de sesión de usuario y luego ir por el servicio cota

Pero si es que existe código en múltiples actividades de tratar con el servicio

+0

gracias ** user1203673 **, descubrí la diferencia entre los dos y cuándo usarlo. si desea interactuar con el servicio (por ejemplo, enviar argumentos, etc.), utilice el servicio vinculado y devuelve el objeto de servicio en el método onServiceConnected (donde puede llamar a los métodos en el servicio). no puedes interactuar con un servicio regular (de otra clase). –

1

descubrí la diferencia entre el dos y cuándo usarlo. Si desea interactuar con el servicio (por ejemplo, enviar argumentos, etc.), utilice el servicio enlazado y devuelva el objeto de servicio en el método onServiceConnected (donde puede llamar a los métodos en el servicio). No se puede interactuar con un servicio regular (de otra clase)

+0

Pero puede usar interfaces o Broadcastreceivers para enviar argumentos o la comunicación entre procesos entre actividades y servicios, entonces, ¿por qué usar el servicio enlazado? –

11

me gusta esta explicación:

servicios iniciados son fáciles de programar para los simples uno interacciones manera de una actividad a un servicio, sin embargo, requieren más complejo y programación ad hoc para conversaciones bidireccionales extendidas con sus clientes .

En contraste, los servicios enlazados pueden ser una mejor opción para más interacciones bidireccionales de entre actividades y servicios. Para el ejemplo , admiten conversaciones bidireccionales.

Así que, como usted dijo, si desea interactuar con el servicio, utilice el servicio encuadernado. Con los servicios iniciados (o servicios intencionados) podría hacerlo, solo requeriría una programación más compleja. (por Douglas Schmidt: https://www.youtube.com/watch?v=cRFw7xaZ_Mg (11'10 '')):

Aquí es un resumen que me ayudó a entender (gracias Doug): enter image description here

Finalmente, un último enlace que me ayudó también: http://www.techotopia.com/index.php/An_Overview_of_Android_Started_and_Bound_Services

servicios iniciados son lanzados por otros componentes de la aplicación (por ejemplo, una actividad o incluso un receptor de radiodifusión) y potencialmente ejecutar de forma indefinida en el fondo hasta que se detiene el servicio, o se destruye por el ru Android sistema ntime para liberar recursos. Un servicio continuará ejecutándose si la aplicación que lo inició ya no está en primer plano, e incluso si se destruye el componente que originalmente inició el servicio

Un servicio vinculado es similar a un servicio iniciado con la excepción de que un servicio iniciado generalmente no arroja resultados o permite la interacción con el componente que lo lanzó.Un servicio vinculado, por otro lado, permite que el componente de lanzamiento interactúe con, y reciba resultados del servicio.

+1

Un IntentService (servicio iniciado) puede devolver resultados como enviar de vuelta una transmisión para actualizar la interfaz de usuario. O IntentService también puede devolver resultados utilizando el patrón de devolución de llamada de la interfaz. –

+0

Pero puede usar interfaces o Broadcastreceivers para enviar argumentos o comunicación entre procesos entre actividades y servicios, entonces, ¿por qué utilizar el servicio vinculado entonces? –