2011-01-15 2 views
30

라디오 스트리밍 앱을 프로그래밍하고 있습니다. AIDL 인터페이스 기술을 사용하여 원격 서비스로 "라디오 재생"을 실행하여 서비스와 통신합니다. 그러나 나는 정말로 한 가지를 이해하지 못합니다.AIDL 인터페이스 매개 변수 값의 "In/out/inout"?

AIDL 인터페이스 매개 변수 값의 "out"은 무엇입니까? 이처럼

:

이해하는 방법은 활동에서 호출 될 때, 즉 원격으로 데이터를 전송한다 "에서"
String doSomething(in String a, out String[] b); 

.

"out"이란 무엇이며 동일한 방법으로 "in"과 "out"이 필요한 이유는 무엇입니까? 어떤 경우에 ("out/inout") 사용됩니까? String[]이 "출력"되는 이유는 무엇입니까?

도와주세요 .. AIDL에서

+3

@ 글래디드가 귀하의 질문에 철저히 답변했다고 생각합니다. 당신이 그의 대답을 확인하면 좋을 것입니다. –

답변

45

상기 out 태그 출력 전용 파라미터를 지정한다. 즉, 입력에 흥미있는 데이터가 없지만 메소드 중에 데이터로 채워지는 매개 변수입니다. 예를 들어

바이트의 배열은 다음과 같이 지정 될 수 복사하는 방법

void copyArray(in byte[] source, out byte[] dest); 

inout 태그 파라미터가 입력 및 출력 모두를 의미하는 것을 나타낸다. 예를 들어 각 파라미터의 내용 marshalled 있어야하므로

void charsToUpper(inout char[] chars); 

이 중요하다 (송신, 수신, 직렬화 및 역 직렬화). 인/아웃 태그를 사용하면 Binder는 더 나은 성능을 위해 마샬링 단계를 건너 뛸 수 있습니다.

+1

AIDL 링크가 작동하지 않습니다. 올바른 것은 [AIDL] (http://developer.android.com/guide/components/aidl.html)입니다. – kaneda

관련 문제