Todo lo que he aprendido alguna vez de ello, he aprendido en este page.
Editar: También me tropecé con Activity and Task Design Guidelines. Se ve a cubrir el tema exacto que preguntó acerca. He aprendido mucho :)
Así que, básicamente, las actividades de diferentes procesos pueden estar contenidos en el mismo pila. ¿Estoy en lo correcto?
Según lo que yo sé, estás en lo cierto. Mi comprensión es que los Procesos son las unidades de ejecución real, mientras que las Tareas se refieren a la asociación para hacer las cosas. Como ejemplo de la página mencionada anteriormente, si crea una intención que abre una página web, la Actividad que crea se crea en el proceso de los navegadores web, pero está asociada a sus aplicaciones Tarea. Una tarea, por lo tanto, se convierte en una pila virtual de actividades que se ejecutan en diferentes procesos según la aplicación que proporcionó la actividad.
Otra pregunta: ¿Cuál es el verdadero significado de "contexto de aplicación"? El proceso o la tarea?
Esta es una buena pregunta. Basado en leer la página anterior, mi entendimiento es que un contexto de Aplicaciones está asociado con el proceso. Estoy basando que sobre la interpretación de esta línea de esa página, pero puede haber otra información:
Normalmente, una nueva instancia de una actividad se puso en marcha en el proceso de la aplicación que se define, así todas las instancias de la actividad de ejecución en el mismo proceso
Y la pregunta final: la clase de aplicación (que es básicamente una singleto n) representa el proceso o la tarea?
Con la misma interpretación que el anterior, mi conjetura en cuanto a por qué un objeto Application representa un Singleton se debe a que todas sus aplicaciones obtienen actividades se ejecutan en un solo proceso y ese proceso está ligado a la aplicación. No sé si este es un punto de diseño, pero parece ser, como mínimo, una consecuencia del diseño actual.
Editar: Hay algunas advertencias sobre esto. Parece que su aplicación puede extenderse a través de múltiples procesos, así que supongo que el objeto de aplicación y el contexto actúan como un mecanismo para conectar todos los procesos entre sí. Estoy bastante seguro de que su modelo mental ya lo permitió, asumiendo que los procesos eran de diferentes aplicaciones, por lo que es solo una pequeña diferencia permitirlo en un solo proceso.
El elemento manifiesto tiene el atributo androide: proceso con la descripción de la siguiente manera:
El nombre del proceso en el que la actividad debe plazo. 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 para todos los componentes. Pero cada componente puede anular el valor predeterminado, , lo que le permite extender su aplicación en varios procesos. Si el nombre asignado a este atributo comienza con dos puntos (':'), se crea un nuevo proceso , privado a la aplicación, cuando se necesita y la actividad se ejecuta en ese proceso. Si el nombre proceso comienza con una carácter en minúscula, la actividad se ejecutará en un proceso global de ese nombre, siempre que tiene permiso para hacerlo. Este permite que los componentes en diferentes aplicaciones compartan un proceso, , reduciendo el uso de recursos.
usted es muy informativo gracias. La mayoría de estas cosas no son necesarias para hacer buenas aplicaciones, pero me gusta saber cosas "debajo del capó". Tengo un poco de experiencia en programación en el kernel así que no puedo dormir bien si no sé exactamente lo que está sucediendo: D – Emiliano
Me sorprendería si el objeto Aplicación abarcara varios procesos si implementa su aplicación para abarcar múltiples procesos (usando android: proceso). Creo que la clase Application simplemente tiene un nombre incorrecto, debería haber sido llamada "Proceso" en su lugar. –
@Dibyehdu "la actividad que se crea se crea en el navegador web" es el inglés correcto. Léalo con una coma después de que se crea el primer " – OGHaza