Red de conocimiento informático - Computadora portátil - Cómo escribir un archivo Aidl para Android

Cómo escribir un archivo Aidl para Android

Establecer un servicio AIDL es más complicado que establecer un servicio normal. Los pasos específicos son los siguientes:

(1) Cree un archivo con la extensión Aidl en el directorio del paquete Java del proyecto Eclipse de Android. La sintaxis de este archivo es similar al código Java, pero ligeramente diferente. Consulte el Ejemplo 52 para obtener más detalles.

(2) Si el contenido del archivo Aidl es correcto, ADT generará automáticamente el archivo de interfaz Java (*.java).

(3) Crear una clase de servicio (una subclase de Servicio).

(4) Implemente la interfaz Java generada por el archivo Aidl.

(5) Configure el servicio AIDL en el archivo AndroidManifest.xml. Preste especial atención al valor del atributo android:name en la etiqueta , que es el ID del servicio al que se hará referencia. por el cliente, que es el valor del parámetro de clase Intent.

Creación de un servicio AIDL

En este ejemplo, crearemos un servicio AIDL simple. Este servicio AIDL tiene solo un método getValue, que devuelve un valor de tipo cadena. Una vez instalado el servicio, se llama al método getValue en el lado del cliente y el valor de retorno se genera en el componente TextView. Los pasos para construir este servicio AIDL son los siguientes:

(1) Cree un archivo Aidl. La ubicación del archivo IMyService.aidl es como se muestra en la figura

El contenido del archivo IMyService.aidl es el siguiente:

Código Java:

paquete eoe.demo;

Interfaz IMyService {

String getValue();

}

El contenido del archivo IMyService.aidl. es muy similar al código Java, pero debe prestar atención a Sí, no puede agregar modificadores (por ejemplo, público, privado), tipos de datos que no son compatibles con el servicio AIDL (por ejemplo, público, privado), no compatibles tipos de datos (por ejemplo, InputStream, OutputStream), etc.

(2) Si el contenido del archivo IMyService.aidl se ingresa correctamente, ADT generará automáticamente el archivo IMyService.java. Por lo general, los lectores no necesitan preocuparse por el contenido específico de este archivo ni necesitan mantenerlo. Para conocer el contenido específico de este archivo, los lectores pueden ver el código fuente proporcionado en esta sección.

(3) Escribe la clase MyService. MyService es una subclase de Service. Se define una clase en línea (MyServiceImpl) en la clase MyService, que es una subclase de IMyService.Stub.

importar el servicio android.os.IBinder

importar android.os.RemoteException;

clase pública MyService extiende el servicio {

público class MyServiceImpl extiende IMyService.Stub {

@Override

public String getValue() lanza RemoteException {

return "Folleto de desarrollo de Android/OPhone"

}

}

@Override

IBinder público onBind(Intent intent) {

return new MyServiceImpl();

}

}

Al escribir el código anterior, preste atención a los dos puntos siguientes

IMyService.Stub se genera automáticamente Basado en IBinder. Stub se genera automáticamente en función del archivo IMyService.aidl. Generalmente, no necesita preocuparse por el contenido de esta clase. Solo necesita escribir una subclase (clase MyServiceImpl) que herede de la clase IMyService.Stub.

El método onBind debe devolver una instancia de objeto de la clase MyServiceImpl; de lo contrario, el cliente no podrá obtener el objeto de servicio. blogjava.mobile.aidl.IMyService" />

El siguiente paso es escribir el cliente que llama código Primero cree un nuevo proyecto Eclipse de Android (ch08_aidlclient) y copie el archivo IMyService.java y el directorio del paquete generado automáticamente en el directorio src del proyecto ch08_aidlclient, como se muestra en la figura. Servicio AIDL. Primero debe vincular el servicio y luego puede obtener el objeto de servicio. El código es el siguiente:

Código Java:

paquete net.blogjava.mobile. ;

importar blogjava.mobile.aidl.IMyService;