2010-02-17 11 views
9

To jest kod w mojej Activity. Zainicjuj Intent, a następnie Połączenie, prawda?Jak powiązać tę usługę w systemie Android?

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

Ale moje pytanie brzmi ... co dzieje się wewnątrz połączenia?

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

     } 
     public void onServiceDisconnected(ComponentName className) { 

     } 
    }; 

Czy ktoś może mi powiedzieć, co mogę umieścić kod do onServiceConnected i onServiceDisconnected?

Chcę tylko podstawowe połączenie, aby moje Activity i Service mogły ze sobą rozmawiać.

Edytuj: Znalazłem dobry samouczek i mogę zamknąć to pytanie, chyba że ktoś chce odpowiedzieć. http://www.androidcompetencycenter.com/2009/01/basics-of-android-part-iii-android-services/

Odpowiedz

16

Chciałbym podkreślić, że jeśli następujące przykłady usług świadczonych przez google wtedy usługa będzie wyciek pamięci, zobacz chaps doskonałą post jak to zrobić prawidłowo (i zagłosuj na te związane bug Google)

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

+3

link do tego artykułu nie jest dostępny, ale można je znaleźć pod adresem: http://www.mongrel-phones.com.au/default/how_to_make_a_local_service_and_bind_to_it_in_android –

+0

dać odnośnik teraz jest martwy – PKTomar

4

Oprawa do usługi z działalności powinno być unikane, ponieważ powoduje probems gdy zmiana Konfiguracje działalności (np gdy urządzenie jest obrócony aktywność dostanie ponownie stworzony od podstaw i wiązanie musiałby być re- stworzony).
Proszę odnieść się do komentarza z Commonsware na poniższym poście na stackoverflow
Communicate with Activity from Service (LocalService) - Android Best Practices

1

Aby połączyć usługę do aktywności, wystarczy napisać w realizacji ServiceConnection jest:

@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; 
} 

Tutaj mBoundService jest przedmiotem twojej związanej usługi. Spójrz na to Bound Service Example.

Powiązane problemy