2012-07-03 13 views
8

Ho creato un servizio che invia posizione nella terra posteriore oraAccedi al servizio in esecuzione e chiama il suo metodo?

voglio creare un metodonel mio ATTIVITA che accedere all'istanza attualmente in esecuzione del servizio e la chiamerò il suo metodo

Say Location Service avere Methode

SendLocation() 
{ 
/// to do 
} 

Ora, in attività A:

non è raccomandato Servizio s = getCurrentRunningServiceInstance // qualcosa di simile

e chiamare il suo metodo

s.SendLocation(); 

risposta

1

metodo chiamante del servizio, invece di questo, seguire i passaggi seguenti

1) creare un BroadcastReciever in Ac vità.

2) dal servizio quando posizione cambiato, inviare un intento trasmissione con extra location,

3) ascoltare dal ricevitore in attività e aggiornare activiy conseguenza.

+3

ciao, è possibile chiamare il metodo di qualsiasi servizio in esecuzione? –

4

Non è possibile chiamare direttamente un metodo su Service. Quello che devi fare è bind allo Service.

Nel Service, sostituire onBind() e restituire un valore valido IBinder quindi utilizzarlo in modalità client/server.

Vedere i documenti per Services in particolare rispetto a Creating a Bound Service e anche i documenti per Bound Services.