2012-02-14 18 views
12

Sto creando un'applicazione che si connette a un server XMPP su Android. Voglio mantenere la connessione finché l'utente non si disconnette.Servizio o servizio associato?

Devo utilizzare un servizio regolare o un servizio associato per mantenere attiva la connessione?

Eventuali suggerimenti, consigli e informazioni utili sono i benvenuti.

risposta

3

Un servizio associato è il server in un'interfaccia client-server. Un servizio associato consente ai componenti (come le attività) di collegarsi al servizio, inviare richieste, ricevere risposte e persino eseguire comunicazioni interprocesso (IPC). Un servizio associato solitamente vive solo mentre serve un altro componente dell'applicazione e non viene eseguito in background indefinitamente.

Se tutto il codice presente in un'attività da utente connesso alla disconnessione dell'utente poi andare per il servizio legato

Ma se è presente il codice in molteplici attività provare con un servizio

+0

grazie ** user1203673 **, ho scoperto la differenza tra i due e quando usarlo. se si desidera interagire con il servizio (ad esempio inviare argomenti, ecc.), utilizzare il servizio associato e restituire l'oggetto servizio nel metodo onServiceConnected (in cui è possibile chiamare i metodi nel servizio). non puoi interagire con un servizio regolare (da un'altra classe). –

1

ho scoperto la differenza tra il due e quando usarlo. Se si desidera interagire con il servizio (ad esempio, inviare argomenti, ecc.), Utilizzare il servizio associato e restituire l'oggetto servizio nel metodo onServiceConnected (in cui è possibile chiamare i metodi nel servizio). Non si può interagire con un servizio regolare (da un'altra classe)

+0

Ma è possibile utilizzare interfacce o Broadcastreceivers per inviare argomenti o inter processare le comunicazioni tra attività e servizi, quindi perché utilizzare il servizio associato ?? –

11

mi piace questa spiegazione:

servizi avviati sono facili da programmare per il semplice interazioni modo da un'attività ad un servizio, tuttavia, hanno bisogno più complessa e la programmazione ad hoc per conversazioni bidirezionali prolungate con i loro client .

Al contrario, i servizi associati possono essere una scelta migliore per ulteriori interazioni a doppio senso complesse tra attività e servizi. Per esempio , supportano le conversazioni bidirezionali.

Quindi, come hai detto, se vuoi interagire con il servizio usa il servizio associato. Con i servizi avviati (o servizi di intenti) si potrebbe fare, solo che richiederebbe una programmazione più complessa. (di Douglas Schmidt: https://www.youtube.com/watch?v=cRFw7xaZ_Mg (11'10 '')):

Ecco una sintesi che mi ha aiutato a capire (grazie Doug): enter image description here

Infine, un ultimo legame che mi ha aiutato anche: http://www.techotopia.com/index.php/An_Overview_of_Android_Started_and_Bound_Services

servizi avviati vengono lanciati da altri componenti dell'applicazione (ad esempio un'attività o anche un ricevitore broadcast) e potenzialmente eseguire a tempo indeterminato in background fino a quando il servizio viene arrestato, o viene distrutto dal ru Android sistema ntime per liberare risorse. Un servizio continuerà a funzionare se l'applicazione che è iniziato non è più in primo piano, e anche nel caso in cui il componente che originariamente iniziato il servizio viene distrutto

Un servizio legato è simile a un servizio di iniziare con l'eccezione che un servizio avviato generalmente non restituisce risultati o consente l'interazione con il componente che l'ha avviato.Un servizio associato, d'altro canto, consente al componente di avvio di interagire e ricevere risultati dal servizio.

+1

Un IntentService (servizio avviato) può restituire risultati come l'invio di un broadcaste per aggiornare l'interfaccia utente. Oppure IntentService può anche restituire risultati utilizzando il pattern di callback dell'interfaccia. –

+0

Ma è possibile utilizzare interfacce o Broadcastreceivers per inviare argomenti o inter processare le comunicazioni tra attività e servizi, quindi perché utilizzare il servizio associato ?? –

Problemi correlati