2010-02-17 14 views
9

Questo è il codice nel mio Activity. Inizia un Intento , quindi una connessione , giusto?Come si collega questo servizio in Android?

hello_service = new Intent(this, HelloService.class); 
hello_service_conn = new HelloServiceConnection(); 
bindService(hello_service, hello_service_conn, Context.BIND_AUTO_CREATE); 

Ma la mia domanda è ... cosa succede all'interno della Connessione?

class HelloServiceConnection implements ServiceConnection { 
     public void onServiceConnected(ComponentName className,IBinder boundService) { 

     } 
     public void onServiceDisconnected(ComponentName className) { 

     } 
    }; 

qualcuno può dirmi quello che il codice che ho messo in onServiceConnected e onServiceDisconnected?

Voglio solo una connessione di base in modo che il mio Activity e Service possano parlare tra loro.

Modifica: Ho trovato un buon tutorial e posso effettivamente chiudere questa domanda, a meno che qualcuno non voglia rispondere. http://www.androidcompetencycenter.com/2009/01/basics-of-android-part-iii-android-services/

risposta

16

vorrei far notare che se si seguono gli esempi servizio fornito da Google, allora il servizio sarà una perdita di memoria, vedere questo chaps ottimo post su come farlo correttamente (e votare per il relativo bug di Google)

http://www.ozdroid.com/#!BLOG/2010/12/19/How_to_make_a_local_Service_and_bind_to_it_in_Android

+3

Il link a questo articolo non è disponibile, ma si possono trovare presso: http://www.mongrel-phones.com.au/default/how_to_make_a_local_service_and_bind_to_it_in_android –

+0

dare LINK è morto – PKTomar

4

binding a un servizio da un'attività deve essere evitato in quanto causa probems quando il cambiamento Configurazioni attività (ad esempio se il dispositivo viene ruotato dell'attività otterrebbe nuovamente creato da zero e il legame avrebbe dovuto essere ri- creato).
prega di fare riferimento al commento da Commonsware sul seguente post su StackOverflow
Communicate with Activity from Service (LocalService) - Android Best Practices

1

Per collegare un servizio ad un'attività, tutto il necessario per scrivere in un'implementazione ServiceConnection è:

@Override 
public void onServiceDisconnected(ComponentName name) { 
mServiceBound = false; 
} 

@Override 
public void onServiceConnected(ComponentName name, IBinder service) { 
MyBinder myBinder = (MyBinder) service; 
mBoundService = myBinder.getService(); 
mServiceBound = true; 
} 

Qui mBoundService è un oggetto del tuo servizio vincolato. Dai un'occhiata a questo Bound Service Example.

Problemi correlati