2010-07-26 16 views

Respuesta

5

La mera extensión de una clase de servicio no permitirá que su servicio exponga sus métodos a entidades externas. Si desea que su servicio sea expuesto/usado por un código que se agote de su aplicación de Android, tendrá que definir un AIDL para ello. Este AIDL se compartirá y se formará como un contrato para su servicio. Consulte esto http://developer.android.com/guide/components/aidl.html.

+3

Pero suponiendo sólo a su aplicación hace uso del servicio, no hay razón para usar AIDL - ¿es correcto? – MalcomTucker

+1

Correcto. Pero entonces, ¿por qué le gustaría crear un servicio en ese caso? –

+1

Creé un servicio local en mi aplicación para hacer una descarga más grande. De esa manera, podría tener más control y seguridad que una tarea asíncrona que pueda eliminarse todas las veces. Como entiendo, un servicio que está ligado a una actividad no es probable que sea asesinado si los recursos son escasos. – Janusz

6

Necesita utilizar AIDL si desea que una clase fuera del proceso de su aplicación acceda al Servicio. Si solo está utilizando el servicio desde el interior de su aplicación, puede usar un local service.

0

1.cuando se utiliza el servicio basado en aidl.

algunos de los beneficios se puede ganar por parte segmento de su código en el servicio de back-end:

  • desacoplar front-end y back-end
  • de memoria/CPU de procesamiento intensivo puede ser apilado con el servicio de back-end, GC en el servicio no afectará a la experiencia del usuario front-end
  • accidente
  • servicio no hará bajar toda la APP

2.how para crear un servicio de este tipo

He escrito una buena biblioteca, se puede hacer referencia como ejemplo http://github.com/zhchang/hogwarts

0

AIDL

El lenguaje de definición de interfaz de Android (AIDL) permite a los desarrolladores definir una interfaz de programación que el cliente y el servidor utilización de comunicarse entre sí utilizando la comunicación entre procesos (IPC).

Este artículo muestra cómo conectarse a un servicio en ejecución en Android y cómo recuperar los datos del servicio remoto/en ejecución.

Ejemplo de mecanismo IPC

Let RemoteService ser un servicio al cliente y RemoteServiceClient ser una actividad para comunicarse con el servicio remoto.

Un servicio proporciona información sobre las operaciones matemáticas como suma, resta y multiplicación para los dos enteros dados. Para exponer la funcionalidad de lo que el Servicio puede hacer, cree un archivo .aidl en el directorio del proyecto.

AIDL Example

Cuestiones relacionadas