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

Je suis un peu confus quant à la différence entre une tâche et un processus dans Android.

Si je comprends bien une tâche, ce n'est qu'une pile d'activités. D'après ce que j'ai lu jusqu'ici, je pense qu'une tâche pourrait ressembler à ceci:

  • Comment afficher la chaîne en fonction de la largeur de la disposition
  • Lorsque vous utilisez clipToPadding dans ListView, les articles sont recyclés prématurément
  • Android comment vérifier si le service d'intention est toujours en cours d'exécution ou s'est arrêté en cours d'exécution
  • Comment oublier un réseau sans fil dans Android de manière programmée?
  • Connectez-vous deux fois lorsque vous utilisez SyncAdapters
  • Android détecté Bluetooth déconnecter immédiatement Max 2 secondes
  • | Activity A running in Process P1 | | Activity B running in Process P2 | | Activity C running in Process P3 | 

    Ainsi, les activités fondées sur des processus différents peuvent être contenues dans la même pile. Ai-je raison?

    Une autre question : quel est le sens réel du «contexte d'application»? Le processus ou la tâche?

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

    3 Solutions collect form web for “Différence entre la tâche et le processus dans Android”

    Tout ce que j'ai déjà appris à ce sujet, j'ai appris sur cette page.

    Edit : Je me suis également contenté des principes directeurs d'activités et de tâches. Il cherche à couvrir le sujet exact que vous avez posé. J'ai beaucoup appris 🙂

    Ainsi, les activités fondées sur des processus différents peuvent être contenues dans la même pile. Ai-je raison?

    Selon votre compréhension, vous avez raison. Ma compréhension est que les processus sont les unités d'exécution réelle tandis que les tâches concernent l'association pour faire avancer les choses. À titre d'exemple de la page susmentionnée, si vous créez une intention qui ouvre une page Web, l'activité qu'elle crée est créée sur le processus des navigateurs Web mais est associée à la tâche de vos applications. Par conséquent, une tâche devient une pile virtuelle d'activités fonctionnant selon différents processus selon l'application qui a fourni l'activité.


    Une autre question: quel est le sens réel du «contexte d'application»? Le processus ou la tâche?

    C'est une bonne question. Selon la lecture de la page ci-dessus, je crois comprendre qu'un contexte Applications est associé au processus. Je fonde sur l'interprétation de cette ligne de cette page, mais il peut y avoir d'autres informations:

    Normalement, une nouvelle instance d'une activité est lancée dans le processus de l'application qui l'a défini, de sorte que toutes les instances de l'activité s'exécutent dans le même processus


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

    Avec la même interprétation que ci-dessus, ma supposition quant à savoir pourquoi un objet Application représente un Singleton est parce que toutes vos activités d'applications sont exécutées sur un seul processus et que le processus est lié à l'application. Je ne sais pas qu'il s'agit d'un point de conception, mais il semble être, à tout le moins, une conséquence de la conception actuelle.

    Modifier : Il y a des réserves à cela. Il semble que votre application puisse être répartie sur plusieurs processus, alors je suppose que l'objet Application et le contexte agissent comme un mécanisme permettant d'attacher ensemble tous les processus. Je suis certain que votre modèle mental a déjà permis cela, en supposant que les processus proviennent de différentes applications, donc c'est seulement une petite différence pour le permettre dans un processus unique.

    L'élément manifeste a l'attribut android: processus avec la description comme suit:

    Le nom du processus dans lequel l'activité doit s'exécuter. Normalement, tous les composants d'une application sont exécutés dans le processus par défaut créé pour l'application. Il a le même nom que le paquet de la demande. L'attribut de processus de l'élément peut définir une valeur par défaut différente pour tous les composants. Mais chaque composant peut remplacer la valeur par défaut, ce qui vous permet de diffuser votre application à travers plusieurs processus. Si le nom attribué à cet attribut commence par un colon (':'), un nouveau processus, privé pour l'application, est créé lorsqu'il est nécessaire et l'activité s'exécute dans ce processus. Si le nom du processus commence par un caractère en minuscule, l'activité s'exécutera dans un processus global de ce nom, à condition qu'il ait l'autorisation de le faire. Cela permet aux composants dans différentes applications de partager un processus, ce qui réduit l'utilisation des ressources.

    Une note importante du développeur Android :

    Un malentendu commun sur le multitâche Android est la différence entre un processus et une application. Dans Android, ce ne sont pas des entités couplées de manière étroite: les applications peuvent sembler présentes à l'utilisateur sans un processus réel actuellement en cours d'exécution; Plusieurs applications peuvent partager des processus, ou une application peut utiliser plusieurs processus en fonction de ses besoins; Les processus d'une application peuvent être conservés par Android même lorsque cette application ne fait pas activement quelque chose.

    Processus: Lorsqu'un composant d'application démarre et que l'application n'a aucun autre composant en cours d'exécution, le système Android lance 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 le même thread (appelé «thread principal»). Chaque application s'exécute dans son propre processus et tous les composants de l'application exécutent dans ce processus par défaut.

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

    Tâches: une tâche est une collection d'activités auxquelles les utilisateurs interagissent lors de l'exécution d'un certain travail. Les activités sont organisées dans une pile (la "pile arrière"), dans l'ordre dans lequel chaque activité est ouverte. Une activité peut même commencer des activités qui existent dans d'autres applications sur le périphérique. Par exemple, si votre application souhaite envoyer un courrier électronique, vous pouvez définir une intention d'effectuer une action "envoyer" et inclure des données telles qu'une adresse e-mail et un message. Une activité d'une autre application qui se déclare elle-même pour gérer ce type d'intention s'ouvre alors. Dans ce cas, l'intention est d'envoyer un courrier électronique, de sorte que l'activité "composer" d'une application de messagerie commence (si plusieurs activités prennent en charge la même intention, le système permet à l'utilisateur de choisir celui à utiliser). Lorsque le courrier électronique est envoyé, votre activité reprend et il semble que l'activité de messagerie faisait partie de votre application. Même si les activités peuvent provenir de différentes applications, Android maintient cette expérience utilisateur transparente en gardant les deux activités dans la même tâche.

    Pour la tâche détaillée – http://developer.android.com/guide/components/tasks-and-back-stack.html

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.