2009-04-27 11 views

Odpowiedz

2

Jest to zgodne ze zdalnym interfejsem używanym między kontekstem a usługą (w scenariuszu zdalnego połączenia). Na przykład można zrobić tak:

IBinder service = this.bindService(new Intent(TestService.class.getName())); 
assertNotNull(service); 
assertTrue(service instanceof ITestServiceCall); //see if the service returns the correct interface 
ITestServiceCall iTestServiceCall = ITestServiceCall.Stub.asInterface(service); 
assertNotNull(iTestServiceCall); 
iTestServiceCall.doSomething(); 

The ITestServiceCall jest interfejs, który można zdefiniować w pliku AIDL (ITestServiceCall.aidl).

Ale zanim to zadziała, musisz upewnić się, że twoja usługa poprawnie zwraca wartość Stub twojego interfejsu na onBind().

Mam nadzieję, że to może pomóc.

+0

To jest zły pomysł, aby przetestować twój segregator zaraz po wywołaniu bindService. Ta metoda jest asynchroniczna i nie zwraca nic interesującego, zanim usługa onServiceConnected ServiceConnection zostanie nazwana – Snicolas

+1

. Nie ma funkcji 'ServiceConnection.onServiceConnected()' używanej w ServiceTestCase, dlatego otrzymujemy obiekt IBinder natychmiast po 'bindService()'. Różni się to od faktycznego przepływu usług, jaki myślę. –

Powiązane problemy