如何测试服务返回的IBinder对象中onBind方法?
根据您在上下文和服务之间使用的远程接口(在远程调用场景中),可以按照以下方式进行操作:
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();
ITestServiceCall是在AIDL文件(ITestServiceCall.aidl)中定义的接口。
但在此之前,您需要确保您的服务在onBind()上正确返回您的接口的Stub。
希望这可以帮助您。
ServiceConnection.onServiceConnected()
,这就是为什么我们在bindService()
之后立即获取IBinder对象的原因。我认为这与实际服务流程不同。 - Surya Wijaya Madjid