2009-04-27 11 views

Respuesta

2

De acuerdo con la interfaz remota que utiliza entre su contexto y el servicio (en el escenario de llamada remota). Por ejemplo, usted puede hacer así:

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(); 

El ITestServiceCall es la interfaz que se define en un archivo AIDL (ITestServiceCall.aidl).

Pero antes de que esto pueda funcionar, debe asegurarse de que su servicio devuelva el Stub de su interfaz correctamente en onBind().

Espero que esto pueda ayudar.

+0

es una mala idea probar su carpeta inmediatamente después de haber llamado bindService. Este método es asíncrono y no devuelve nada interesante antes de que se llame a ServiceConnection onServiceConnected – Snicolas

+1

No hay 'ServiceConnection.onServiceConnected()' utilizado en ServiceTestCase, es por eso que obtenemos el objeto IBinder inmediatamente después de 'bindService()'. Esto es diferente del flujo de servicio real, creo. –