2011-04-13 2 views
0

내 하위 클래스의 바인더를 사용하여 메서드를 노출하려고합니다. 바인더, 기타 등등 .. 내 서비스를 반환하도록하겠습니다.바인더에서 메서드 호출

내 질문은 : 내 다른 클래스에 정의 된 Binder 구현 호출 메서드를 가질 수 있습니까? 예를 들어, XMPP를 사용하여 채팅 메시지를 연결, 로그인 및 전송합니다. 모듈화 관점에서 볼 때 다른 클래스의 메서드를 정의하면 Binder를 통해 해당 메서드를 노출 할 수 있습니까?

또한 IPC (http://developer.android.com/guide/topics/fundamentals/bound-services.html#Messenger)에 AIDL을 사용할 필요가 없지만 대신 메신저. 저는 액티비티 (또는 다른 app 컴포넌트)가 바인드 한 다음 내 바인더에 의해 노출 된 특정 메소드를 호출하는 방법에 대해 약간 명확하지 않습니다.

모든 샘플 또는 나를 바로 설정하면 크게 감사하겠습니다.

감사합니다.

답변

2

내 질문은 : 내 다른 클래스에서 정의한 Binder 구현 호출 메서드를 가질 수 있습니까?

일반적으로 말해서, 어째서?

다른 클래스 (모듈성의 관점에서 볼 때)에서이 메서드를 정의하면 간단히 바인더를 통해 해당 메서드를 표시 할 수 있습니까?

원칙적으로 네,하지만 실제로는 "그 방법"이 실제로 무엇인지에 달려 있습니다. 또한

, 나의 이해는 더 이상 당신을 IPC (http://developer.android.com/guide/topics/fundamentals/bound-services.html#Messenger)에 대한 AIDL을 사용할 필요가 없습니다, 대신이다 메신저를 사용할 수 있습니다.

서비스가있는 Android에서 IPC를 수행하는 방법에는 여러 가지가 있습니다. AIDL은 하나입니다. IntentMessenger을 넣는 것은 또 다른 방법입니다. 그들은 서로 모순되지 않으며 다른 옵션도 있습니다.

액티비티 (또는 다른 앱 구성 요소)가 내 바인더에 의해 노출 된 특정 메소드를 바인딩 한 다음 호출하는 방법이 약간 명확하지 않습니다.

그들은 다음 ServiceConnectiononServiceConnected() 방법을 통해 공급되는 Binder를 사용하는 ServiceConnection으로 bindService() 전화.

+1

마크 머피 자신, 와우! 3 권의 책에서 하루 종일 서비스에 대해 읽었습니다. 디자인 측면에서 메시지를 내 서비스에 보내는 별도의 메신저 클래스를 갖는 것이 합리적입니까? 그리고 나서 메신저 클래스의 메시지 메서드를 내 활동에서 호출하는 것일까 요? – LuxuryMode

+0

@LuxuryMode : "Mark Murphy 님, 와우!" Mark Murphy? 어디에?? 오, 잠깐, 너 나 말야. :-) "분리 된 메신저 클래스"에 대한 토론과 관련하여, 나는 당신이 의미하는 바를 완전히 이해하지 못한다는 것을 두려워합니다. – CommonsWare