Cách kiểm tra đối tượng IBinder
của mình mà Service
trả lại trên onBind
?Thử nghiệm dịch vụ Android
Trả lời
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.
đó 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
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ĩ. –
Chấp nhận câu trả lời đã hơn 3 năm! – JPM