2011-01-15 10 views
30

Estoy programando una aplicación de transmisión de radio. Ejecuto la "reproducción de radio" como un Servicio remoto utilizando la técnica de interfaz AIDL para comunicarme con el Servicio. Pero realmente no entiendo una cosa."In/out/inout" en un valor de parámetro de interfaz AIDL?

¿Cuál es la "salida" en un valor de parámetro de interfaz AIDL?

De esta manera:

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

entiendo "en", que es el envío de datos a la distancia cuando se llama al método de la actividad.

¿Qué es "fuera", y por qué necesitamos "entrar" y "salir" en el mismo método? ¿En qué caso se usan ("out/inout")? ¿Por qué el String[] está "fuera"?

favor ayuda ..

+3

Creo que @gladed respondió a su pregunta exhaustivamente. Sería bueno que compruebe su respuesta. –

Respuesta

45

En AIDL, la etiqueta out especifica un parámetro de salida de sólo. En otras palabras, es un parámetro que no contiene datos interesantes en la entrada, pero se completará con datos durante el método.

Por ejemplo, un método que copia una matriz de bytes se podría especificar como esto:

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

La etiqueta inout indica que el parámetro ha significado tanto de entrada como de salida. Por ejemplo:

void charsToUpper(inout char[] chars); 

Esto es importante porque el contenido de cada parámetro debe ser marshalled (serializado, transmitida, recibida, y deserializar). Las etiquetas de entrada/salida le permiten al Encuadernador omitir el paso de clasificación para obtener un mejor rendimiento.

+1

El enlace AIDL está inactivo. El correcto es [AIDL] (http://developer.android.com/guide/components/aidl.html) – kaneda

Cuestiones relacionadas