Propriété de Albiri Sigue
customer 27921 at Fri Mar 11 19:19:45 +0100 2011
Chapitre 16
Gestion des événements du cycle de vie d’une activité 175
● Si l’activité s’est exécutée et que vous l’ayez configurée pour qu’elle utilise des ressources
différentes en fonction des états du terminal (mode portrait ou mode paysage, par
exemple), elle sera recréée et onCreate() sera donc appelée.
C’est dans cette méthode que vous configurez l’interface utilisateur et tout ce qui ne doit
être fait qu’une seule fois, quelle que soit l’utilisation de l’activité.
À l’autre extrémité du cycle de vie, onDestroy() peut être appelée lorsque l’activité prend
fin, soit parce qu’elle a appelé finish() (qui "finit" l’activité), soit parce qu’Android a
besoin de mémoire et l’a fermée prématurément. onDestroy() peut ne pas être appelée si
ce besoin de mémoire est urgent (la réception d’un appel téléphonique, par exemple) et
que l’activité se terminera quoi qu’il en soit. Par conséquent, onDestroy() est essentiellement destinée à libérer les ressources obtenues dans onCreate().
onStart(), onRestart() et onStop()
Une activité peut être placée au premier plan, soit parce qu’elle vient d’être lancée, soit
parce qu’elle y a été mise après avoir été cachée (par une autre activité ou la réception d’un
appel, par exemple).
Dans ces deux cas, c’est la méthode onStart() qui est appelée. onRestart() n’est invoquée
que lorsque l’activité a été stoppée et redémarre.
Inversement, onStop() est appelée lorsque l’activité va être stoppée.
onPause() et onResume()
La méthode onResume() est appelée immédiatement avant que l’activité ne passe au
premier plan, soit parce qu’elle vient d’être lancée, soit parce qu’elle est repartie après
avoir été stoppée, soit après la fermeture d’une boîte de dialogue (ouverte par la réception
d’un appel, par exemple). C’est donc un bon endroit pour reconstruire l’interface en fonction de ce qui s’est passé depuis que l’utilisateur l’a vue pour la dernière fois. Si votre activité interroge un service pour savoir s’il y a de nouvelles informations (de nouvelles
entrées dans un flux RSS, par exemple), onResume() est le bon moyen de rafraîchir la vue
courante et, si nécessaire, de lancer un thread en arrière-plan (via un Handler, par exemple)
pour modifier cette vue.
Inversement, tout ce qui détourne l’utilisateur de votre activité – essentiellement l’activation d’une autre activité – provoquera l’appel d’onPause(). Vous pouvez profiter de cette
méthode pour annuler tout ce que vous aviez fait dans onResume() : arrêter les threads en
arrière-plan, libérer les ressources en accès exclusif que vous auriez pu prendre (l’appareil
photo, par exemple), etc.
Lorsque onPause() a été appelée, Android se réserve le droit de tuer à tout moment le
processus de l’activité. Par conséquent, vous ne devriez pas supposer que vous pourrez
recevoir d’autre événement de la part de celle-ci.
Livre Android.book Page 175 Dimanche, 8. novembre 2009 12:23 12
Précédent

- 190/391

Suivant