51 votes

Différence entre la tâche et le processus dans Android

Je suis un peu confus au sujet de la différence entre une tâche et un processus Android.

Si je comprends bien une tâche est juste une pile d'activités. De ce que j'ai lu jusqu'à présent, je pense à une tâche pourrait ressembler à ceci:

| Activity A running in Process P1 |
| Activity B running in Process P2 |
| Activity C running in Process P3 |

Donc, fondamentalement, les activités de différents processus peuvent être contenues dans une même pile. Suis-je la corriger?

Une autre question: Quel est le sens réel de "contexte de l'application"? Le processus ou la tâche?

Et dernière question: La classe application (qui est en fait un singleton) représente le processus ou la tâche?

45voto

Nick Campion Points 7263

Tout ce que j'ai appris, j'ai appris sur cette page.

Edit: je viens de tombé sur l'Activité et la Tâche des lignes Directrices de Conception. Il ressemble à couvrir l'exacte sujet vous m'avez demandé. J'ai appris beaucoup de choses :)

Donc, fondamentalement, les activités de différents les processus peuvent être contenus dans le même la pile. Suis-je la corriger?

Basé sur ma compréhension, vous avez raison. Mon comprendre, c'est que les Processus sont les unités d'exécution, tandis que les Tâches de l'association sont de faire les choses. Comme un exemple de la page mentionnée précédemment, si vous créez une intention qui ouvre une page web, l'Activité qu'il crée est créé sur le web navigateurs, mais est associée avec vos applications Tâche. Une tâche, par conséquent, devient une pile virtuelle des Activités en cours d'exécution sur les différents procédés selon l'application prévue de l'Activité.


Une autre question: qu'est-Ce que le réel sens de "contexte de l'application"? L' processus ou de la tâche?

C'est une bonne question. Basé sur la lecture de la page ci-dessus, ma compréhension est qu'une des Applications de contexte est associé avec le processus. Je suis fondant sur l'interprétation de cette ligne à partir de cette page, mais il y a peut être d'autres infos:

Normalement, une nouvelle instance d'un l'activité est lancée dans le processus de de l'application qui l'a défini, de sorte toutes les instances de l'activité gérée en le même processus


Et dernière question: L'application catégorie (qui est en fait un singleton) représente le processus ou la tâche?

Avec la même interprétation que ci-dessus, je pense que pour expliquer pourquoi un objet d'Application représente un Singleton est parce que toutes vos applications des activités à exécuter sur un seul processus, et ce processus est lié à l'Application. Je ne sais pas que c'est un point de la conception, mais il semble être, au moins, une conséquence de la conception actuelle.

Edit: Il y a quelques mises en garde à ce. Il semble que votre application peut être réparties entre plusieurs processus, ma supposition est que l'Application de l'Objet et du contexte agir comme un mécanisme pour la connexion de tous les processus ensemble. Je suis sûr que votre modèle mental déjà permis à de ce, en supposant que les processus ont été à partir d'applications différentes, donc c'est seulement une petite différence pour l'autoriser à l'intérieur d'un seul et même processus.

L'élément manifest a l'attribut android:process avec la description comme suit:

Le nom de l' processus dans lequel l'activité doit exécuter. Normalement, tous les composants d'un l'exécution de l'application par défaut dans le processus de créé pour l'application. Il a le même nom que l'application package. L'élément processus d'attribut peut définir un autre par défaut pour tous les composants. Mais chaque composant peut remplacer la valeur par défaut, vous permettant de diffuser votre application à travers de multiples processus. Si le nom attribué à cet attribut commence par un signe deux-points (':'), un nouveau processus, privé de l'application, est créé lorsque c'est nécessaire et la l'activité s'exécute dans le processus. Si l' nom du processus commence par une minuscule caractère, l'activité va s'exécuter dans un processus global de ce nom, à condition qu'il a l'autorisation de le faire. Cette permet de composants dans les différents des applications à partager un processus, la réduction de l'utilisation des ressources.

11voto

neeraj kirola Points 100

Processus: Lorsqu'un composant de l'application démarre et l'application ne dispose pas de tous les autres composants en cours d'exécution, le système Android démarre un nouveau processus Linux pour l'application avec un seul thread d'exécution. Par défaut, tous les composants de la même application s'exécutent dans le même processus et thread (appelé le "principal" thread).Chaque application s'exécute dans son propre processus et toutes les composantes de l'exécution de l'application dans ce processus, par défaut.

pour le détail du processus: http://developer.android.com/guide/components/processes-and-threads.html

Tâches: Une tâche est un ensemble d'activités dont les utilisateurs interagissent avec lors de l'exécution d'un certain travail. Les activités sont organisées dans une pile (la "pile de retour"), dans l'ordre dans lequel chaque activité est ouverte. Une activité peut même commencer à les activités qui existent dans d'autres applications sur le périphérique. Par exemple, si votre application a veut envoyer un e-mail, vous pouvez définir une intention de procéder à un "envoyer" action et d'y inclure certaines données, comme une adresse de courriel et un message. Une activité à partir d'une autre application qui déclare lui-même à gérer ce genre d'intention s'ouvre alors. Dans ce cas, l'intention est d'envoyer un e-mail pour une application de courrier électronique de "composer" le début de l'activité (si plusieurs activités de soutien à l'intention de même, le système permet à l'utilisateur de choisir lequel utiliser). Lorsque le message est envoyé, votre reprise de l'activité et il me semble que si l'activité de la messagerie a été le cadre de votre demande. Même si les activités peuvent être de différentes applications, Android maintient cette expérience utilisateur transparente en gardant les deux activités dans la même tâche.

pour le détail de la tâchehttp://developer.android.com/guide/components/tasks-and-back-stack.html

10voto

metdos Points 3154

Une remarque importante à partir de Développeur Android :

Un malentendu commun sur Android multitâche est la différence entre un processus et une application. Dans Android, ce ne sont pas étroitement couplée à des entités: applications peuvent sembler présenter à l'utilisateur sans réel processus de l'exécution de l'application; plusieurs applications peuvent partager des processus ou une application peut utiliser plusieurs processus en fonction de ses besoins; le(s) processus de demande peut être gardé autour de par Android, même lorsque l'application n'est pas fait quelque chose.

1voto

Pratik Points 475

Découvrez cette vidéo http://www.youtube.com/watch?v=TkPiXRNee7A

L'une des superbes vidéos de google io 2008

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X