Android pour mobiles: structure des applications
Android de Google est un système d'exploitation pour téléphones mobiles. Il est fondé sur Linux. L'architecture des applications pour Android introduit des concepts allant au-delà des modèles classiques.
Le modèle données-vues
C'est le modèle utilisé notamment pas la librairie Swing de
Java. La vue est l'interface par laquelle l'utilisateur interagit avec le
logiciel. Les données sont stockées séparément
et peuvent s'afficher dans des vues différentes.
La vue peut aussi changer les données selon le contexte, par exemple
changer le texte selon la langue de l'utilisateur.
Le modèle d'Android
Android étend ce modèle vues/données, il fournit un nouveau modèle qui convient aux matériels activés en permanence. La structure des applications est définie ainsi:
Les vues (classe android.view.View)
- L'interface d'un programme pour Android est une arborescence de vues.
- L'image à droite montre quatres vues dans un écran (une activité).
Le fichier AndroidManifest.xml
- Il définit les composants de l'application et leurs relations.
- Il donne à l'application les permissions quand à ce qu'elle peut faire vis à vis des utilisateurs. On peut aussi donner des permissions aux composants de l'application.
Les composants de l'application:
- Activité (classe android.app.Activity).
C'est une chose que l'utilisateur peut faire, traduite en programme. Elle correspond à un écran mais peut avoir plusieurs vues. - Intention (classe android.content.Intent).
Décrit une action qui doit être réalisée. - Service (classe android.app.Service).
Programme qui fonctionne en tâche de fond. - Fournisseur de contenu (classe android.content.ContentProvider).
Il encapsule les données et les fournit en commun aux programmes. - Notification (classe android.app.NotificationManager et android.app.Notification).
Classe qui informe l'utilisateur de ce qui se passe.
A coté des composants, il y a aussi les ressources qui peuvent être des fichiers XML, des fichiers images jpeg et autres. Elle utilisent l'interface android.content.Resources et sont stockées dans le répertorie res.
Composants de l'application
Chaque composant figure dans une liste enregistrée dans le fichier manifeste AndroidManifest.xml de chaque application.
HTC Hero avec Android
Activité (Activity)
Une activité correspond à un écran. Si une application se compose de plusieurs écrans, elle a une activité pour chaque écran. Chaque activité est une classe qui étend la classe de base Activity. Elle dispose d'une interface utilisateur graphique faite de vues (views) et elle répond à des évènements (events). Quand on change d'écran, on lance une nouvelle activité. Celle-ci peut retourner une valeur. Par exemple, si une activité permet de choisir quelque chose, un texte, une image, elle retourne ce qu'elle à choisi.
L'interface graphique d'une activité est décrite par un Layout:
- Plein écran.
- Flottant: dialogue ou alerte.
- Aucun. Dans ce cas elle fonctionne en tâche de fond et est invisible.
On la rend visible en lui donnant un layout.
Noter que l'interface graphique est décrite en XML comme XUL et XAML.
Intention (Intent)
Les intentions sont les buts des applications et se concrétisent par le changement
d'écran. Une intention est formée d'une action et de données qui sont des
URI.
Exemples d'actions: MAIN, VIEW, EDIT, PICK.
Si l'on veut voir la fiche d'une personne on forme une intention. L'action
est VIEW et la donnée est l'URI qui permet d'accéder à cette fiche.
Les IntentFilters (filtres) décrivent comment l'action doit s'appliquer. L'IntentReceiver
est un objet qui réagit aux évènements extérieurs. Il peut fonctionner dans
l'application ou il peut démarrer l'application.
Exemple d'intention, voir la page Web: VIEW pour l'action et pour donnée https://www.scriptol.fr.
Service
Le service est destiné à fonctionner indépendamment de l'écran, donc des activités. Le meilleur exemple est le joueur de musique qui peut fonctionner pendant qu'on passe d'un écran à un autre.
Fournisseur de contenu (Content Provider)
Les données stockées par un programme, sous forme de fichiers ou de bases de données SQLite sont privées et ne peuvent être utilisées par d'autres applications.
On utilise un Content Provider pour partager ces données entre applications. L'interface ContentResolver est l'interface qui fournit les données aux autres objets.
Notification
La classe android.app.Notification définit comment un évènement
doit être notifié à l'utilisateur: affichage d'une icône,
voyant lumineux, vibration, ou autre.
Tandis que la classe android.app.NotificationManager envoie le message
sous la forme ainsi définie.
Conclusion
Le modèle d'application Android offre des concepts qui vont au-delà d'une interface pour téléphone mobile. Il est conçu pour un ensemble d'applications partageant des données, déclenchées les unes par les autres, fonctionnant en tâche de fond ou dans une vue sur l'écran. C'est une interface entre l'utilisateur et le système d'exploitation de nature robotique qui pourrait fonctionner sur un ordinateur portable ou de bureau.
Référence: developer.android.com
Voir aussi: Android et Nexus One.