2011-01-15 10 views
30

Programuję aplikację do strumieniowego przesyłania radia. Prowadzę "grę radiową" jako usługę zdalną, wykorzystując technikę interfejsu AIDL do komunikacji z Usługą. Ale tak naprawdę nie rozumiem jednej rzeczy."In/out/inout" w wartości parametru interfejsu AIDL?

Co to jest "out" w wartości parametru interfejsu AIDL?

Jak to:

String doSomething(in String a, out String[] b); 

Rozumiem, „w”, który wysyła dane do zdalnego gdy metoda jest wywoływana z działalności.

Co to jest "out" i dlaczego potrzebujemy "in" i "out" w tej samej metodzie? W takim przypadku są one używane ("out/inout")? Dlaczego String[] "wychodzi"?

Proszę o pomoc ..

+3

Myślę, że @gladed odpowiedział wyczerpująco na twoje pytanie. Byłoby miło, gdybyś sprawdził odpowiedź. –

Odpowiedz

45

W AIDL, znacznik out określa parametr wyjściowy tylko. Innymi słowy, jest to parametr, który nie zawiera interesujących danych wejściowych, ale zostanie wypełniony danymi podczas metody.

Na przykład, sposób, że kopie szereg bajtów może być określona w następujący sposób:

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

Znacznik inout oznacza, że ​​parametr ten sposób, zarówno na wejściu i wyjściu. Na przykład:

void charsToUpper(inout char[] chars); 

Jest to ważne, ponieważ zawartość każdego parametru musi być marshalled (w odcinkach, przesyłana, odebranych i rozszeregować). Znaczniki wejściowe/wyjściowe umożliwiają narzędziu Binder pominięcie etapu układania w celu uzyskania lepszej wydajności.

+1

Łącze AIDL nie działa. Prawidłowy to [AIDL] (http://developer.android.com/guide/components/aidl.html) – kaneda

Powiązane problemy