2009-04-27 30 views

Trả lời

2

Nó theo giao diện từ xa mà bạn sử dụng giữa ngữ cảnh và dịch vụ (trong kịch bản cuộc gọi từ xa). Ví dụ bạn có thể làm như thế này:

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

Các ITestServiceCall là giao diện mà bạn xác định trong một tập tin AIDL (ITestServiceCall.aidl).

Nhưng trước khi điều này có thể hoạt động, bạn phải đảm bảo dịch vụ của bạn trả lại chính xác giao diện của bạn trên onBind().

Tôi hy vọng điều này có thể hữu ích.

+0

đó là một ý tưởng tồi để kiểm tra chất kết dính của bạn ngay sau khi đã gọi bindService. Phương thức này là không đồng bộ và trả về không có gì thú vị trước khi ServiceConnection của bạn onServiceConnected được gọi là – Snicolas

+1

Không có 'ServiceConnection.onServiceConnected()' được sử dụng trong ServiceTestCase, đó là lý do tại sao chúng ta nhận đối tượng IBinder ngay sau 'bindService()'. Điều này khác với dòng dịch vụ thực tế mà tôi nghĩ. –

Các vấn đề liên quan