Extrait du cours complet le développement sous Android
6.1 Composants d’une application
Une application Android n’est pas qu’une simple activité. Dans de nombreux cas, une application Android est amenée à tirer partie de la programmation concurrente afin de réaliser des tâches parallèles.
Dans ce chapitre, on s’intéresse à la notion de processus:
-processus « lourd » appelé par la suite « processus »
-processus « léger » appelé par la suite thread
Une fois ces deux notions présentées, nous verrons comment réaliser des tâches particulières qui sont souvent concurrente à l’activité principale. Ces tâches s’appuient principalement sur les treads, mais aussi sur un nouveau composant d’une application appelé « service ».
6.2 Processus
[PT] Par défaut, une application android s’exécute dans un processus unique, le processus dit « principal ».
L’interface graphique s’exécute elle aussi au travers de ce processus principal. Ainsi, plus une application réalisera de traitement, plus la gestion de la programmation devient délicate car on peut arriver très rapidement à des problèmes de blocage de l’interface graphique par exemple.
Il est possible de séparer les composants d’une application en plusieurs processus. Ces composants sont les codes attachés aux tags <activity>, <service>, <receiver>, et <provider> de l’application. Par défaut, l’application (tag <application>) s’exécute dans le processus principal portant le même nom que le package de l’application. Bien que cela soit inutile, on peut le préciser dans le Manifest à l’aide de l’attribut android:process, par exemple:
<application android:process= »andro.jf »>
Les sous-tags du manifest, c’est-à-dire les composants de l’application héritent de cet attribut et s’exécutent donc dans le même processus. Si l’on souhaite créer un nouveau processus indépendant, on peut utiliser l’attribut android:process en préfixant le nom du processus par « : », par exemple:
<service android:name= ».AndroService » android:process= »:p2″>
Pour cet exemple, le service et l’application sont indépendants. L’interface graphique pourra s’afficher indépendament.
Vie des processus
Android peut devoir arrêter un processus à cause d’autres processus qui requiert plus d’importance. Par exemple, un service peut être détruit car une application gourmande en ressources (navigateur web) occupe de plus en plus de mémoire. Plus classiquement, le processus affecté à une activité qui n’est plus visible a de grandes chances d’être détruite.
Ainsi, une hiérarchie d’importance permet de classer le niveau d’importance des processus:
1. Processus en avant plan (activité en interaction utilisateur, service attaché à cette activité, BroadCastReceiver exécutant onReceive())
2. Processus visible: il n’interagit pas avec l’utilisateur mais peut influer sur ce que l’on voit à l’écran (activité ayant affiché une boite de dialogue (onPause() a été appelé), service lié à ces activité « visibles »).
3. Processus de service
Sommaire: Cours complet le développement sous Android
1 Plan du module
2 Le SDK Android
3 Interfaces graphiques
4 Les Intents
5 Persistance des données
6 Programmation concurrente
7 Connectivité
8 Développement client serveur
9 Aspects bas niveau
10 Annexes: outils
11 Annexes: codes sources
12 Bibliographie
Cours complet le développement sous Android (1,14 MO) (Cours PDF)