Tener un proceso separado puede ser útil si hay componentes de su aplicación, que no necesariamente tienen que estar corriendo ser útil para el usuario, y la tarea de fondo es crítica para la "corrección" de la aplicación (ya sea ahora o en el futuro). El ejemplo clásico de esto es una aplicación que tiene un servicio donde el servicio guarda o carga algunos datos que son críticos para su aplicación (¡lo que significa que la única forma de recuperar la información es hacer que el usuario la vuelva a ingresar!). El servicio podría ser responsable de hacer algo como subir o guardar datos, mientras que la actividad es solo la interfaz para el usuario. Así que los desarrolladores deben desacoplar estos dos componentes para evitar problemas que puedan surgir de mi próximo punto ...
Android fue diseñado para funcionar en un entorno restringido de recursos (especialmente memoria), por lo que los procesos considerados sin importancia son asesinados periódicamente para abrir la memoria importantes por el "asesino de memoria baja" (LMK) (si Google esto obtendrá toneladas de información sobre el tema). Cosas como los procesos en primer plano tienen una prioridad más alta dado que actualmente están en uso, pero a veces también mueren por motivos como consumir demasiada memoria. Ahora imagine que necesita guardar algunos datos en una base de datos después de que el usuario haga algo en la aplicación y use un servicio para asegurarse de que se realice incluso si el usuario navega fuera de la aplicación. A menos que cree el servicio en su propio proceso, es probable que el proceso que contiene tanto la actividad como el servicio sea eliminado ya que el proceso pertenece a una actividad que no está en primer plano. Sin embargo, no siempre es necesario colocar el servicio en su propio proceso, muchas veces simplemente dando al servicio su propio hilo será suficiente; es muy específico de la aplicación.Solo colocaría un servicio en su propio proceso si tardó más de unos pocos segundos (el tiempo suficiente para que el usuario se aleje de mi aplicación y para que el LMK intervenga) para realizar alguna tarea en segundo plano y esa tarea relacionada a la "corrección" de mi aplicación (IE guardando datos para más adelante). Para algo como el almacenamiento en caché, adhiérase a los hilos, ya que si el proceso se elimina prematuramente, puede recrear esos datos más adelante.
Otra razón para tener un proceso separado es si está ejecutando un servicio global (un servicio que puede ser utilizado por aplicaciones distintas del suyo) que tal vez proporcione una interfaz a través de una Actividad para la configuración.
En cuanto a la pregunta de rendimiento, definitivamente habrá un golpe de rendimiento para algo como esto. La comunicación entre procesos no es barata, por lo que solo debería utilizar un proceso por separado si encaja en un caso de uso específico, como los mencionados anteriormente. Además, hay una cierta cantidad de memoria por encima para mantener un proceso, por lo que es otro golpe de rendimiento.
Parece que este hilo de StackOverflow está mejor documentado: [Sigue este enlace:)] (https://stackoverflow.com/questions/4658511/android-how-to-decide-whether-to-run-a-service- in-a-separate-process) – Tobliug