Top Banner
Programmation Android IV. Cycle de vie d’une application Android 1 / 36 Cours Android - F. Michel N
30

IV. Cycle de vie d’une application Android - lirmm.frfmichel/old/ens/android/cours/android_lifecycle.pdf · Vue globale du cycle de vie Cycle de vie d’une application Android

Nov 13, 2018

Download

Documents

truongkiet
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: IV. Cycle de vie d’une application Android - lirmm.frfmichel/old/ens/android/cours/android_lifecycle.pdf · Vue globale du cycle de vie Cycle de vie d’une application Android

Programmation AndroidIV. Cycle de vie d’une application

Android

1 / 36Cours Android - F. Michel

N

Page 2: IV. Cycle de vie d’une application Android - lirmm.frfmichel/old/ens/android/cours/android_lifecycle.pdf · Vue globale du cycle de vie 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

Page 3: IV. Cycle de vie d’une application Android - lirmm.frfmichel/old/ens/android/cours/android_lifecycle.pdf · Vue globale du cycle de vie Cycle de vie d’une application Android

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

Page 4: IV. Cycle de vie d’une application Android - lirmm.frfmichel/old/ens/android/cours/android_lifecycle.pdf · Vue globale du cycle de vie Cycle de vie d’une application Android

Vue globale du cycle de vie

Cycle de vie d’une application Android

5 / 36Cours Android - F. Michel

N

Page 5: IV. Cycle de vie d’une application Android - lirmm.frfmichel/old/ens/android/cours/android_lifecycle.pdf · Vue globale du cycle de vie Cycle de vie d’une application Android

Vue globale du cycle de vie

Cycle de vie : interactions utilisateurs

6 / 36Cours Android - F. Michel

N

Page 6: IV. Cycle de vie d’une application Android - lirmm.frfmichel/old/ens/android/cours/android_lifecycle.pdf · Vue globale du cycle de vie Cycle de vie d’une application Android

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

Page 7: IV. Cycle de vie d’une application Android - lirmm.frfmichel/old/ens/android/cours/android_lifecycle.pdf · Vue globale du cycle de vie Cycle de vie d’une application Android

Vue globale du cycle de vie

Doc android.app.Activity Activity

8 / 36Cours Android - F. Michel

N

Page 8: IV. Cycle de vie d’une application Android - lirmm.frfmichel/old/ens/android/cours/android_lifecycle.pdf · Vue globale du cycle de vie Cycle de vie d’une application Android

Vue globale du cycle de vie

Doc android.app.Activity Activity

9 / 36Cours Android - F. Michel

N

Page 9: IV. Cycle de vie d’une application Android - lirmm.frfmichel/old/ens/android/cours/android_lifecycle.pdf · Vue globale du cycle de vie Cycle de vie d’une application Android

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

Page 10: IV. Cycle de vie d’une application Android - lirmm.frfmichel/old/ens/android/cours/android_lifecycle.pdf · Vue globale du cycle de vie Cycle de vie d’une application Android

Démarrage d’une activité

Exemple de redéfinition de onCreate

12 / 36Cours Android - F. Michel

N

Page 11: IV. Cycle de vie d’une application Android - lirmm.frfmichel/old/ens/android/cours/android_lifecycle.pdf · Vue globale du cycle de vie Cycle de vie d’une application Android

Démarrage d’une activité

Démarrage :onCreate→ onStart→ onResume

13 / 36Cours Android - F. Michel

N

Page 12: IV. Cycle de vie d’une application Android - lirmm.frfmichel/old/ens/android/cours/android_lifecycle.pdf · Vue globale du cycle de vie Cycle de vie d’une application Android

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

Page 13: IV. Cycle de vie d’une application Android - lirmm.frfmichel/old/ens/android/cours/android_lifecycle.pdf · Vue globale du cycle de vie Cycle de vie d’une application Android

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

Page 14: IV. Cycle de vie d’une application Android - lirmm.frfmichel/old/ens/android/cours/android_lifecycle.pdf · Vue globale du cycle de vie Cycle de vie d’une application Android

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

Page 15: IV. Cycle de vie d’une application Android - lirmm.frfmichel/old/ens/android/cours/android_lifecycle.pdf · Vue globale du cycle de vie Cycle de vie d’une application Android

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

Page 16: IV. Cycle de vie d’une application Android - lirmm.frfmichel/old/ens/android/cours/android_lifecycle.pdf · Vue globale du cycle de vie Cycle de vie d’une application Android

Pause et unpause

Exemple

Méthode appelée à chaque prise de focus, y compris la première fois

19 / 36Cours Android - F. Michel

N

Page 17: IV. Cycle de vie d’une application Android - lirmm.frfmichel/old/ens/android/cours/android_lifecycle.pdf · Vue globale du cycle de vie Cycle de vie d’une application Android

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

Page 18: IV. Cycle de vie d’une application Android - lirmm.frfmichel/old/ens/android/cours/android_lifecycle.pdf · Vue globale du cycle de vie Cycle de vie d’une application Android

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

Page 19: IV. Cycle de vie d’une application Android - lirmm.frfmichel/old/ens/android/cours/android_lifecycle.pdf · Vue globale du cycle de vie Cycle de vie d’une application Android

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

Page 20: IV. Cycle de vie d’une application Android - lirmm.frfmichel/old/ens/android/cours/android_lifecycle.pdf · Vue globale du cycle de vie Cycle de vie d’une application Android

Arrêt et redémarrage

onRestart → onStart

La plupart des applications ne redéfinisse pas onRestart

24 / 36Cours Android - F. Michel

N

Page 21: IV. Cycle de vie d’une application Android - lirmm.frfmichel/old/ens/android/cours/android_lifecycle.pdf · Vue globale du cycle de vie Cycle de vie d’une application Android

Arrêt et redémarrage

Exemple

25 / 36Cours Android - F. Michel

N

Page 22: IV. Cycle de vie d’une application Android - lirmm.frfmichel/old/ens/android/cours/android_lifecycle.pdf · Vue globale du cycle de vie Cycle de vie d’une application Android

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

Page 23: IV. Cycle de vie d’une application Android - lirmm.frfmichel/old/ens/android/cours/android_lifecycle.pdf · Vue globale du cycle de vie Cycle de vie d’une application Android

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

Page 24: IV. Cycle de vie d’une application Android - lirmm.frfmichel/old/ens/android/cours/android_lifecycle.pdf · Vue globale du cycle de vie Cycle de vie d’une application Android

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

Page 25: IV. Cycle de vie d’une application Android - lirmm.frfmichel/old/ens/android/cours/android_lifecycle.pdf · Vue globale du cycle de vie Cycle de vie d’une application Android

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

Page 26: IV. Cycle de vie d’une application Android - lirmm.frfmichel/old/ens/android/cours/android_lifecycle.pdf · Vue globale du cycle de vie Cycle de vie d’une application Android

Restauration

Exemple

32 / 36Cours Android - F. Michel

N

Page 27: IV. Cycle de vie d’une application Android - lirmm.frfmichel/old/ens/android/cours/android_lifecycle.pdf · Vue globale du cycle de vie Cycle de vie d’une application Android

Restauration

Restauration de l’état d’une activité(2) et/ou (3)

33 / 36Cours Android - F. Michel

N

Page 28: IV. Cycle de vie d’une application Android - lirmm.frfmichel/old/ens/android/cours/android_lifecycle.pdf · Vue globale du cycle de vie Cycle de vie d’une application Android

Restauration

Restauration de l’état d’une activité

Dans la méthode onCreate :

34 / 36Cours Android - F. Michel

N

Page 29: IV. Cycle de vie d’une application Android - lirmm.frfmichel/old/ens/android/cours/android_lifecycle.pdf · Vue globale du cycle de vie Cycle de vie d’une application Android

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

Page 30: IV. Cycle de vie d’une application Android - lirmm.frfmichel/old/ens/android/cours/android_lifecycle.pdf · Vue globale du cycle de vie Cycle de vie d’une application Android

Conclusion

Résumé global

Ce cours reprend largement les tutoriaux en ligne proposés par Google : Android developers

36 / 36Cours Android - F. Michel

N