Tengo una aplicación de Android que consiste en una actividad y un servicio. Actualmente ambos existen en el mismo proceso y usan el mismo montón pero quiero separar el proceso/montón para el servicio. Es decir. Quiero que el servicio sea completamente independiente de la actividad, de modo que si la actividad falla, no afectará el servicio. Sin embargo, quiero que se puedan instalar como una aplicación única. es posible?Cómo crear una actividad y un servicio de Android que usan procesos separados
Respuesta
Definitivamente es posible. Ver el atributo process
para service
en AndroidManifest.xml
http://developer.android.com/guide/topics/manifest/service-element.html
Para citar:
El nombre del proceso en el que el servicio se va a ejecutar. Normalmente, todos los componentes de una aplicación se ejecutan en el proceso predeterminado creado para la aplicación. Tiene el mismo nombre que el paquete de la aplicación. El atributo de proceso del elemento puede establecer un valor predeterminado diferente para todos los componentes. Pero el componente puede anular el valor predeterminado con su propio atributo de proceso, lo que le permite distribuir su aplicación en múltiples procesos.
Si el nombre asignado a este atributo comienza con dos puntos (':'), se crea un nuevo proceso, privado para la aplicación, cuando es necesario y el servicio se ejecuta en ese proceso. Si el nombre del proceso comienza con un carácter en minúscula, el servicio se ejecutará en un proceso global de ese nombre, siempre que tenga permiso para hacerlo. Esto permite que los componentes en diferentes aplicaciones compartan un proceso, reduciendo el uso de recursos.
IPC for services es En mi humilde opinión solo se requiere si el servicio debe ser consumido por otras aplicaciones.
La ejecución de un servicio en su propio proceso tiene las pequeñas ventajas de que el recolector de basura para el servicio no afecta a su aplicación y que la memoria del servicio es un poco menor si se ejecuta solo.
Si el consumo del servicio por otras aplicaciones no es un requisito para usted, prefiera un servicio local. De forma alternativa, puede ejecutar el servicio en su propio proceso y utilizar una comunicación diferente con su aplicación, p. a través de un receptor de difusión. Traté de describir los diferentes enfoques en mi tutorial de servicio Android bajo el siguiente enlace: Activity and service communication.
no es el (servicio en proceso separado) la única forma de evitar que el servicio se llame propio onDestroy cuando se destruye la actividad de llamada? – EsmaeelQash
Hola Vogella, ¿puedes explicarme cualquier escenario en el que decidamos "consumo del servicio por otras aplicaciones", no estoy recibiendo este término. gracias – SRam
La ejecución de un servicio en un proceso separado ayuda a garantizar que, en caso de que el proceso de la aplicación principal finalice, el servicio pueda continuar. Entonces esto es bastante útil. – Luca
- 1. ¿Cómo iniciar un servicio de Android desde una actividad y detener el servicio en otra actividad?
- 2. Android - Interacción de actividad y servicio
- 3. ¿Cómo establecer una comunicación bidireccional entre actividad y servicio en diferentes procesos?
- 4. Android: ¿usa el método de un servicio en una actividad?
- 5. Android - Crear una nueva actividad en Eclipse
- 6. Android: Pasar datos entre el servicio y la actividad
- 7. Crear solo una instancia de servicio (Android)
- 8. ¿Cómo iniciar una actividad desde un servicio?
- 9. ¿Cómo manejar el IPC entre un servicio y una actividad (y su subactividad)?
- 10. Lanzar una excepción personalizada de un servicio a una actividad
- 11. Transmisión de Android de Servicio a Actividad
- 12. Cómo crear una actividad de configuración para Android Live Wallpaper
- 13. Android - Cómo crear varias instancias de una actividad?
- 14. Android: cómo crear una actividad transparente con temas de diálogo
- 15. android cómo crear mi propia actividad y ampliarla?
- 16. Android y Robotium: ¿actividad de prueba que espera un extra?
- 17. ¿Cómo puedo actualizar la información en una actividad de Android desde un fondo? Servicio
- 18. ¿Cómo puede un servicio de Android saber que no está vinculado a ninguna actividad?
- 19. Procesos de un único remitente y múltiples receptores que usan cola de mensajes posix en Linux
- 20. Enlazar y conectar un servicio de android fuera de una actividad
- 21. Android: parámetro pase a servicio desde Actividad
- 22. cómo devuelve un servicio el resultado de una actividad
- 23. Servicio de Android: parece que no puede encontrar un ejemplo.
- 24. ¿Las aplicaciones que usan procesos múltiples comparten una instancia de Dalvik?
- 25. ¿Cómo crear dos vistas en Android que usan 50% de altura cada una, a menos que una sea más pequeña?
- 26. pasando objeto personalizado al servicio de Android en diferentes procesos
- 27. Método de actividad de acceso de Android dentro del servicio
- 28. ¿Está garantizado que un servicio de android llama a Destroy()?
- 29. Android, AsyncTask, procesos de larga ejecución y cambios de orientación
- 30. cómo crear un acceso directo que conduce a una actividad no iniciadora?
Agradable. @lyricsboy pero una Pregunta: en el escenario de OP, cuando Android mata la Actividad (de ahí la aplicación), ¿habrá matado también al Servicio en ejecución si está en el mismo proceso? –
Depende de cómo se inicia el servicio (qué modo) y otros factores relacionados con la memoria. Puede encontrar más detalles en: http://developer.android.com/guide/topics/fundamentals/processes-and-threads.html – lyricsboy
Gracias, eso fue – chris