IV. Cycle de vie d’une application Android -...
-
Upload
truongkiet -
Category
Documents
-
view
212 -
download
0
Transcript of 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
2 / 36Cours Android - F. Michel
N
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 des4 états suivants
resumed : en avant planpaused : perte de focus mais encore visible (encore entièrement enmémoire)stopped : complètement obscurcie par une autre activité (peut êtretuée pour récupérer de la mémoire)off : non démarrée. Le système peut terminer une activité en pauseou stoppée, elle repasse alors dans l’état off et devra êtreentièrement redémarrée
4 / 36Cours Android - F. Michel
N
Vue globale du cycle de vie
Cycle de vie d’une application Android
5 / 36Cours Android - F. Michel
N
Vue globale du cycle de vie
Cycle de vie : interactions utilisateurs
6 / 36Cours Android - F. Michel
N
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éthodescorrespondantes en fonction des interactions utilisateurs
onCreatestartedresumedstoppeddestroyed
gestion cycle de vie = redéfinition des méthodes-clés
Il n’est pas obligatoire de tout redéfinir, onCreate peut suffire
7 / 36Cours Android - F. Michel
N
Vue globale du cycle de vie
Doc android.app.Activity Activity
8 / 36Cours Android - F. Michel
N
Vue globale du cycle de vie
Doc android.app.Activity Activity
9 / 36Cours Android - F. Michel
N
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 appellesa méthode onCreate
11 / 36Cours Android - F. Michel
N
Pause et unpause
(1) Perte de focus → Paused
Intervient lorsqu’une autre activité non bloquante visuellement passeau premier plan (sélection, dialogues, etc.)Premier signe que l’utilisateur va quitter l’application
15 / 36Cours Android - F. Michel
N
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 uninté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
16 / 36Cours Android - F. Michel
N
Pause et unpause
Exemple
Note : l’instance de l’activité est gardée en mémoire : pas besoin deréinitialiser les composants utilisés
17 / 36Cours Android - F. Michel
N
Pause et unpause
(2) Reprise de focus → OnResume
Intervient à chaque prise de focus, y compris la première fois
18 / 36Cours Android - F. Michel
N
Pause et unpause
Exemple
Méthode appelée à chaque prise de focus, y compris la première fois
19 / 36Cours Android - F. Michel
N
Arrêt et redémarrage
Arrêt et redémarrage
Scénarios
L’utilisateur bascule sur une autre application puis revient via lemenu des applications
Une action de l’activité démarre une autre activité : l’activité eststoppée dès que la deuxième est créée.
Appel téléphonique
21 / 36Cours Android - F. Michel
N
Arrêt et redémarrage
Arrêt et redémarrage
L’activité reste en mémoire : pour des applications simples, onPausepeut être suffisant
22 / 36Cours Android - F. Michel
N
Arrêt et redémarrage
Exemple
Note : la sauvegarde des états des Vues possédant un android :idest automatique (Bundle) : e.g. valeurs des champs texte
23 / 36Cours Android - F. Michel
N
Arrêt et redémarrage
onRestart → onStart
La plupart des applications ne redéfinisse pas onRestart
24 / 36Cours Android - F. Michel
N
Destruction
onDestroy : dernière méthode appelée
Son appel n’est pas garanti (kill spécifique par l’OS en cas denécessité)Dernière chance de relâcher des ressources
27 / 36Cours Android - F. Michel
N
Destruction
Destruction complète
arrêts normaux → instance et données perdues
L’utilisateur a cliqué le bouton Back
L’activité a appelée sa méthode finish()
arrêts forcés → perte instance mais sauveguarde des données
le système détruit l’activité pour récupérer des ressources
rotation de l’écran : destruction puis reconstruction, i.e. pourl’utilisation d’un layout spécifique
28 / 36Cours Android - F. Michel
N
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 intact30 / 36
Cours Android - F. MichelN
Restauration
Sauvegarde de données additionnelles (1)
1. onSaveInstanceState(Bundle) est appelée lorsquel’utilisateur quitte l’activité (avant onStop). Le Bundle est préremplien cas d’arrêt forcé de l’application. onSaveInstanceState estéventuellement utilisée pour des sauvegardes supplémentaires.Ces données servent dans le cas où l’activité doit être recréée suite àune destruction (volontaire ou non).
31 / 36Cours Android - F. Michel
N
Restauration
Restauration de l’état d’une activité
Dans la méthode onCreate :
34 / 36Cours Android - F. Michel
N
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éthoden’est appelée que si c’est le cas.
35 / 36Cours Android - F. Michel
N
Conclusion
Résumé global
Ce cours reprend largement les tutoriaux en ligne proposés par Google : Android developers
36 / 36Cours Android - F. Michel
N