¿Bajo qué circunstancias el uso de AIDL para definir una interfaz de servicio sería la decisión correcta (en lugar de simplemente crear una extensión para la clase service
)?¿Cuándo usar un servicio basado en aidl?
Respuesta
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.
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.
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
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.
- 1. ¿Es posible usar herencia en las interfaces AIDL?
- 2. ¿Cuándo no se debe usar un servicio web?
- 3. ¿Cuándo debería usar OperationContextScope dentro de un servicio WCF?
- 4. Cómo crear un servicio web basado en API En Symfony2
- 5. ¿Cómo inicio un servicio basado en un objeto ServiceInfo?
- 6. Cuándo usar OSGi EventAdmin y cuándo no?
- 7. Cuándo usar un módulo y cuándo usar una clase
- 8. Necesita tutoriales de AIDL
- 9. Cuándo usar undef_method, y cuándo usar remove_method?
- 10. Cuándo usar Ruby vs Cuándo usar PHP
- 11. Cuándo usar (o no usar) un delegado
- 12. Cuándo usar categorías y cuándo usar subclases?
- 13. cuándo usar Tarea y cuándo usar Subproceso?
- 14. Cuándo usar Pepino y cuándo usar RSpec?
- 15. ¿Cuándo debería usar un analizador?
- 16. Cuándo usar atributos vs. cuándo usar propiedades en python?
- 17. Cuándo usar componentes y cuándo usar extensiones en Yii?
- 18. Cuándo usar dup, y cuándo usar clon en Ruby?
- 19. Cuándo usar vectores y cuándo usar matrices en C++?
- 20. Mensajes SOAP en el servicio web basado en REST
- 21. Cuándo usar un método de página versus crear un servicio web?
- 22. ¿Cuándo usar == y cuándo usarlo?
- 23. ¿Cuándo deberíamos alojar el servicio WCF en IIS y cuándo deberíamos alojar en un servicio de Windows?
- 24. ¿Cuándo no usar ACS?
- 25. Cuándo se llama a destructor en un servicio WCF
- 26. ¿Cómo puedo usar Boost.Test en un proyecto basado en CMake?
- 27. ¿Cuál es el punto en un WSDL con un servicio basado en el resto?
- 28. ¿Cuándo usamos el servicio de Windows?
- 29. ¿Cómo usar el cliente basado en socket con el servicio WCF (net.tcp)?
- 30. Cuándo usar @ en una vista de rieles y cuándo usar un símbolo?
Pero suponiendo sólo a su aplicación hace uso del servicio, no hay razón para usar AIDL - ¿es correcto? – MalcomTucker
Correcto. Pero entonces, ¿por qué le gustaría crear un servicio en ese caso? –
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