IV. Cycle de vie d’une application Android -...

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

Transcript of IV. Cycle de vie d’une application Android -...

Programmation AndroidIV. Cycle de vie d’une application

Android

1 / 36Cours Android - F. Michel

N

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

Démarrage d’une activité

Exemple de redéfinition de onCreate

12 / 36Cours Android - F. Michel

N

Démarrage d’une activité

Démarrage :onCreate→ onStart→ onResume

13 / 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

Arrêt et redémarrage

Exemple

25 / 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

Exemple

32 / 36Cours Android - F. Michel

N

Restauration

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

33 / 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