¿Cómo utilizar AIDL para diseñar una interfaz remota en Android? ¿Por favor dígame?
En la plataforma Android, un proceso generalmente no puede acceder al espacio de memoria de otro proceso, por lo que para tener una conversación, los objetos deben descomponerse en unidades básicas que el sistema operativo pueda entender y pasar a través de ellas. Procese los límites de manera ordenada.
Es tedioso implementar este proceso de transferencia de datos a través de código. Android proporciona herramientas AIDL para manejar este trabajo. AIDL (AndroidInterfaceDefinitionLanguage) es un lenguaje IDL que se utiliza para generar código que puede realizar comunicación entre procesos (IPC) entre dos procesos en un dispositivo Android. Si desea llamar a la operación de un objeto en otro proceso (como Servicio) en un proceso (como Actividad), puede usar AIDL para generar parámetros serializables. El mecanismo AIDLIPC está orientado a interfaz, como COM o Corba, pero más liviano. Utiliza clases de proxy para pasar datos entre el cliente y la implementación.
1. Utilice AIDL para implementar IPC (ImplementingIPCUsingAIDL)
Los pasos para utilizar AIDL para implementar servicios IPC son: Primero, cree un archivo .aidl. Este archivo (YourInterface.aidl) define los métodos y la interfaz de datos disponibles para los clientes. En segundo lugar, agregue el archivo .aidl al archivo MAKE (el complemento ADT en Eclipse proporciona funciones de administración). Android incluye un compilador llamado AIDL, ubicado en la carpeta herramientas/. En tercer lugar, implemente la interfaz: el compilador AIDL utiliza el lenguaje Java para crear la interfaz a partir del archivo de interfaz AIDL. Esta interfaz tiene una clase abstracta interna heredada llamada Stub (que ha implementado algunos métodos adicionales para llamadas IPC). Todo lo que necesita hacer es crear una clase que herede de YourInterface.Stub e implementar los métodos declarados en el archivo .aidl. Cuarto, exponer la interfaz al cliente. Si está escribiendo un servicio, debe heredar Service y sobrecargar Service.onBind(Intent) para devolver una instancia de objeto que implemente la interfaz.
2. Cree el archivo .aidl (Createan.aidlFile)
AIDL utiliza una sintaxis simple para declarar la interfaz, describir sus métodos y los parámetros y valores de retorno de los métodos. . Estos parámetros y valores de retorno pueden ser de cualquier tipo, incluso otras interfaces generadas por AIDL. Tenga en cuenta que se deben importar todos los tipos no integrados. Los tipos de datos que AIDL puede admitir incluyen las siguientes categorías: Primero, los tipos principales del lenguaje de programación Java (int, booleano, etc.) no requieren una declaración de importación. En segundo lugar, las interfaces generadas por otros AIDL que normalmente se pasan por referencia deben declararse con una declaración de importación. En tercer lugar, para implementar el protocolo Parcelable y las clases personalizadas pasadas por valor, deben declararse con una declaración de importación. Además, hay algunos que no requieren declaraciones de importación, como String, etc.
3. Implementación de la interfaz
AIDL genera una interfaz con el mismo nombre que el archivo .aidl. Si utiliza el complemento Eclipse, AIDL se ejecutará automáticamente como parte del archivo. proceso de compilación (no es necesario ejecutar AIDL primero y luego compilar el proyecto; si no hay un complemento, primero debe ejecutar AIDL);
La interfaz generada contiene una clase interna abstracta llamada Stub, que declara todos los métodos descritos en .aidl. Stub también define una pequeña cantidad de métodos auxiliares, especialmente asInterface (), a través de los cuales se obtiene el IBinder (pasado). al onServiceConnected() del cliente cuando se llama exitosamente a applicationContext.bindService()) y devuelve la instancia de interfaz utilizada para llamar al método IPC.
Para implementar su propia interfaz, herede de la clase YourInterface.Stub y luego implemente los métodos relevantes (puede crear un archivo .aidl para implementar el método stub sin compilar en el medio. El proceso de compilación de Android procesará el archivo .aidl antes el archivo .java).
Después de completar la implementación de la interfaz, debe exponer la interfaz al cliente, es decir, publicar el servicio. El método de implementación es heredar el Servicio y luego usar Service.onBind (Intent) para devolver un objeto de clase que implementa la interfaz. El siguiente fragmento de código muestra cómo exponer la interfaz IRemoteService a los clientes. Si hay una clase que quiere pasar entre procesos a través de AIDL, esta idea se puede realizar, pero se debe garantizar la validez de esta clase en ambos extremos del IPC.
Las anteriores son algunas de las ideas y métodos de implementación del autor para "Usar AIDL para diseñar interfaces remotas en Android". El autor cree que debido a las características propias de integración, control e interactividad de Android, puede estimular el interés de los estudiantes en el aprendizaje, movilizar la participación activa de los estudiantes, ampliar el conocimiento de los estudiantes y proporcionar múltiples rutas de aprendizaje.
(Unidad del autor: Zhenjiang Technician College)