with servicios ibinder enlazados android service stub aidl

servicios - service binder android



¿Qué es "Stub" y "AIDL" para en java? (2)

Pregunta 1:

Estoy estudiando el servicio de Android y con frecuencia veo un código como este:

private ISampleService.Stub sampleServiceIf = new ISampleService.Stub(){}

¿Qué es .Stub ?

Pregunta 2:

AIDL " AIDL ", pero quiero saber por qué tenemos que usar eso en lugar del archivo de interfaz de Java.


''Stub'' es una clase que implementa la interfaz remota de una manera que puede usarla como si fuera una local. Maneja los datos de marashalling / desmarca y envío / recepción a / desde el servicio remoto. El término ''stub'' se usa generalmente para describir esta funcionalidad en otros métodos RPC (COM, Java remoting, etc.), pero puede significar cosas ligeramente diferentes.

El IDL (Lenguaje de definición de interfaz) generalmente es independiente del lenguaje, y teóricamente podrías generar código de código auxiliar C ++ o Python a partir de él. Sin embargo, el Android está basado en Java, por lo que la distinción es sutil. Una diferencia es que solo puede tener una única interfaz en un archivo .aidl, mientras que Java permite múltiples clases / interfaces por archivo .java. También hay algunas reglas para los tipos que son compatibles, por lo que no es exactamente lo mismo que una interfaz Java, y no puede usar una en lugar de AIDL.


Hey, por favor revise este AIDL . Te ayudará a entender el stub y AIDL.