Programmation Android
IV. Cycle de vie d’une application
Android
Plan
1 Vue globale du cycle de vie
2 Démarrage d’une activité
3 Pause et unpause
4 Arrêt et redémarrage
5 Destruction
6 Restauration
Cours Android - F. Michel
Vue globale du cycle de vie
Cycle de vie d’une application Android
État d’une activité
Au fil des interactions utilisateurs, une activité peut être dans un des 4 états suivants
resumed: en avant plan
paused: perte de focus mais encore visible (encore entièrement en mémoire)
stopped: complètement obscurcie par une autre activité (peut être tuée pour récupérer de la mémoire)
off: non démarrée. Le système peut terminer une activité en pause ou stoppée, elle repasse alors dans l’état off et devra être
entièrement redémarrée
Vue globale du cycle de vie
Cycle de vie d’une application Android
Cours Android - F. Michel
Vue globale du cycle de vie
Cycle de vie : interactions utilisateurs
Vue globale du cycle de vie
Cycle de vie d’une application Android
Gestion du cycle de vie
le système appelle automatiquement les méthodes correspondantes en fonction des interactions utilisateurs
onCreate started resumed stopped destroyed
gestion cycle de vie =redéfinition des méthodes-clés Il n’est pas obligatoire de tout redéfinir,onCreatepeut suffire
Cours Android - F. Michel
Vue globale du cycle de vie
Doc android.app.Activity
ActivityVue globale du cycle de vie
Doc android.app.Activity
ActivityCours Android - F. Michel
Démarrage d’une activité
Démarrage d’une activité via le manifest
Dans le fichier
AndroidManifest.xml
Lorsque l’activité est démarée, le système instancie l’activité et appelle sa méthode
onCreate
Démarrage d’une activité
Exemple de redéfinition de onCreate
Cours Android - F. Michel
Démarrage d’une activité
Démarrage :
onCreate → onStart → onResume
Pause et unpause
(1) Perte de focus → Paused
Intervient lorsqu’une autre activité non bloquante visuellement passe au premier plan (sélection, dialogues, etc.)
Premier signe que l’utilisateur va quitter l’application
Cours Android - F. Michel
Pause et unpause
Que faire dans onPause
Relâcher les ressources et stopper l’utilisation du CPU :
Stopper les animations et tout ce qui peut consommer du CPU Enregistrer les changements non sauvés (uniquement ce qui a un intérêt pour l’application, pas de données utilisateur)
rendre au système la main sur les ressources utilisées : réseau, senseurs (e.g. GPS, caméra).
et d’une manière générale, éviter les traitements coûteux en CPU
Pause et unpause
Exemple
Note : l’instance de l’activité est gardée en mémoire : pas besoin de réinitialiser les composants utilisés
Cours Android - F. Michel
Pause et unpause
(2) Reprise de focus → OnResume
Intervient à chaque prise de focus, y compris la première fois
Pause et unpause
Exemple
Méthode appelée à chaque prise de focus, y compris la première fois
Cours Android - F. Michel
Arrêt et redémarrage
Arrêt et redémarrage
Scénarios
L’utilisateur bascule sur une autre application puis revient via le menu des applications
Une action de l’activité démarre une autre activité : l’activité est stoppée dès que la deuxième est créée.
Appel téléphonique
Arrêt et redémarrage
Arrêt et redémarrage
L’activité reste en mémoire : pour des applications simples,
onPause
peut être suffisantCours Android - F. Michel
Arrêt et redémarrage
Exemple
Note : la sauvegarde des états des Vuespossédant un android :id est automatique (
Bundle
) : e.g. valeurs des champs texteArrêt et redémarrage
onRestart → onStart
La plupart des applications ne redéfinisse pas
onRestart
Cours Android - F. Michel
Arrêt et redémarrage
Exemple
Destruction
onDestroy : appelée lors de la destruc- tion
Dernière chance de relâcher des ressources et/ou de nettoyer les écouteurs d’événements système
Cours Android - F. Michel
Destruction
Destruction complète
→ instance de l’activité perdue
arrêts normaux
L’utilisateur a supprimé l’activité ou cliqué son boutonClose L’activité a appelée sa méthodefinish()
arrêts forcés
le système détruit l’activité pour récupérer des ressources rotation de l’écran : destruction puis reconstruction, i.e. pour l’utilisation d’un layout spécifique
Restauration
Sauvegarde / Restauration
Restauration dans l’état où l’utilisateur a quitté : 2 cas
→
Activité détruite puis recréée, l’activité doit restaurer l’état précédent l’activité est stoppée, puis réactivée : état intact
Cours Android - F. Michel
Restauration
Sauvegarde de données additionnelles (1)
1.
onSaveInstanceState(Bundle)
: appelée aprèsonStop
) (avant si v. < 3.0). LeBundle
est prérempli pour les Views ayant un ID.⇒ onSaveInstanceState
est utilisée pour faire dessauvegardes supplémentaires qui seront utilisées par
onRestoreInstanceState(Bundle)
lorsque l’activité est recréée (2) suite à une destruction (volontaire ou non).Restauration
Exemple
Cours Android - F. Michel
Restauration
Restauration de l’état d’une activité
(2) et/ou (3)
Restauration
Restauration de l’état d’une activité
Dans la méthode
onCreate
:Cours Android - F. Michel
Restauration
Restauration de l’état d’une activité
Mieux !Dans la méthode
onRestoreInstanceState
:Pas besoin de tester que le Bundle n’est pas null car cette méthode n’est appelée que si c’est le cas.
Conclusion
Résumé global
Ce cours reprend largement les tutoriaux en ligne proposés par Google : Android developers Cours Android - F. Michel