¿Cuándo se necesita crear un proceso separado en una Aplicación?

Estaba leyendo un artículo en el blog de desarrolladores de Android Process y Threads que habla de crear un nuevo proceso para un componente específico de Application. Pero no pude entender cuándo la creación de un nuevo proceso en mi aplicación se convierte en una necesidad absoluta. ¿Podría ayudarme a comprender las dudas que tengo a este respecto?

  1. Cuando como desarrollador debo sentir que necesito tener un proceso separado para un componente de Android / s?
  2. ¿La introducción de un nuevo proceso tiene algún efecto secundario en el rendimiento general de la aplicación?

Cualquier otra información es muy apreciada.

Gracias, SKU

1.) Necesitas hacer algo en un proceso o hilo separado si no quieres que tu aplicación se comporte lentamente. Al introducir hilos, forzas a que tu aplicación no se ejecute en el subproceso de UI. Por lo tanto, hacer su aplicación sensible a otros eventos. Por ejemplo: puede utilizar subprocesos cuando tiene que obtener algunos datos del servicio web para que se produzcan en segundo plano y no afecte a su aplicación.

2.) Los hilos no deben usarse. Debemos usar AsyncTask o cargadores en lugar de android.

1.) En android 4.0 (y, posiblemente, 3.0, no estoy seguro) El dispositivo no le permite utilizar el agente HTTP en el hilo principal, por lo que se ralentiza la interfaz de usuario .. Esto es cuando los hilos son útiles.

También con el uso de funciones que necesitan un montón de CPU, si éstas se ejecutan en el subproceso de interfaz de usuario, la interfaz de usuario se retrasará y no responderá hasta que termine la función.

2.) como se indica en 1, realmente mejorará el rendimiento visual de su aplicación;)

Tener un proceso separado puede ser útil si hay componentes de su aplicación que no necesariamente necesitan ser ejecutados para ser útiles al usuario, y la tarea de fondo es crítica para la aplicación "corrección" (ya sea ahora o en el futuro). El ejemplo clásico de esto es una aplicación que tiene un servicio en el que el servicio guarda o carga algunos datos que son críticos para su aplicación (un significado crítico, la única manera de recuperar los datos es que el usuario vuelva a ingresarlo!). El servicio puede ser responsable de hacer algo como cargar o guardar datos, mientras que la actividad es sólo la interfaz para el usuario. Así que los desarrolladores deben desacoplar estos dos componentes para evitar problemas que puedan surgir de mi siguiente punto ..

Android fue diseñado para ejecutarse en un entorno restringido de recursos (especialmente la memoria), por lo que los procesos considerados poco importantes se matan periódicamente para abrir la memoria de los importantes por el "asesino de memoria baja" (LMK) (si usted Google obtendrá toneladas de Información sobre el tema). Cosas como los procesos de primer plano, es comprensible que se les da una mayor prioridad, ya que están actualmente en uso, pero a veces se matan también por razones 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 utilice un servicio para hacerlo para asegurarse de que se realiza aunque el usuario se aleje de la aplicación. A menos que cree el servicio en su propio proceso, es probable que el proceso que contenga tanto la actividad como el servicio sea eliminado, ya que el proceso pertenece a una actividad que no es de primer plano. Sin embargo, no siempre es necesario colocar el servicio en su propio proceso, muchas veces simplemente dar el servicio de su propio hilo será suficiente; Es muy específico de la aplicación. Yo solo pondría un servicio en su propio proceso si tardara más que unos segundos (el tiempo suficiente para que el usuario navegue lejos 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 guardar datos para más adelante). Para algo como el almacenamiento en caché, se adhieren a los hilos, ya que si el proceso se mata prematuramente, sólo puede volver a crear los datos más tarde.

Otra razón para tener un proceso separado es si está ejecutando un servicio global (un servicio que puede ser utilizado por otras aplicaciones que no sean las suyas) que tal vez proporcione una interfaz con una actividad para la configuración.

En cuanto a la pregunta de rendimiento, definitivamente habrá un éxito de rendimiento para algo como esto. La comunicación interproceso no es barata, por lo que sólo debería utilizar un proceso independiente si se ajusta a un caso de uso específico, como los mencionados anteriormente. Además, hay una cierta cantidad de sobrecarga de memoria para mantener un proceso, por lo que es otro éxito de rendimiento.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.