Cycle de vie d'une activité sous android
Voici un diagramme qui explique le cycle de vie d'une activité sous android:
http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle
Lorsque votre application est lancée, l'activité est chargée et la méthode onCreate() est lancée. Cette méthode va vous permettre d'initialiser votre activité. Il sera aussi possible de restaurer un précédent lancement de votre application qui aurait été interrompu (bundle, par exemple lors de la rotation de l'écran). Suite à cette méthode, onStart() sera lancée.
onStart() est lancée tout de suite après le onCreate() lorsque l'activité va devenir visible à l'utilisateur. Vous allez pouvoir charger des données, ...Le système pourra ensuite lancer onResume() ou onStop().
onResume() est lancée lorsque votre application est passée en avant plan. Vous pourrez donc (re)lancer vos threads, ... Le système pourra ensuite lancer onPause()
onPause() est lancée lorsqu'une autre activité va s'afficher à l'avant plan. C'est le moment de sauver toutes les données/informations saisies par l'utilisateur pour l'activité courante. En effet, le système peut décider par la suite de mettre fin à votre activité par exemple à cause d'un manque de mémoire. Par conséquent, le système pourra soit lancer soit onResume() pour remettre votre activité en avant plan ou onStop().
Ce traitement
doit rester rapide, car aucune activité ne pourra démarrer tant
que celle-ci ne sera pas finie (il faut bien être certain que les sauvegardes
des informations soient terminées puisque l'activité risque d'être
détruite ensuite).
onStop() est lancée lorsque votre activité n'est plus visible. Votre processus va maintenant passer en sommeil. Le système pourra décider de mettre fin définitivement à votre activité si nécessaire. Si vous aviez des ressources, celles-ci seront libérées. Que ce passe-t-il ensuite ?
- Soit l'utilisateur revient dans votre activité, dans ce cas, onRestart() sera lancée afin de réveiller votre ativité.
- Soit votre activité n'a plus lieu d'être et dans ce cas, onDestroy() sera lancée.
Donc onRestart() est lancée lorsque votre activité en sommeil et redémarre. Cette méthode lancera ensuite la méthode onStart().
Enfin, onDestroy(), qui met fin à au cycle de vie de l'acitivité.
Exécutée lors de l’arrêt de l’activité.
Libérations des ressources et purgent des fichiers temporaires. onCreate()
devra être exécutée pour obtenir à nouveau l'activité.
Lorsqu'une activité
se termine, et même si l'application n'avait qu'une seule activité,
l'application reste apparent comme en cours d'exécution en mémoire.
Pour preuve, sous ics, à partir de l'écran d'accueil, un appui
long sur la touche home permettra d'afficher la liste des applications lancées
(vous pourrez alors les supprimer définitivement en glissant les applications
sur la gauche pour les retirer de la liste). Pour les versions antérieures
d'android, vous pouvez utiliser Task Killer
Il existe deux autres
méthodes un peu particulière qui n'apparaissent pas dans le cycle
de vie:
onSaveInstanceState() ou onRetainNonConfigurationInstance() qui sont déclenchées lorsqu'il faut mémoriser l'état d'une activité suite à une relance de celle-ci. Les causes de cette relance pouvant être un manque de mémoire alors que l'activité est en pause, un changement de la configuration comme par exemple l'écran (rotation, ouverture d'un clavier par exemple) forçant à redessiner les widgets de l'activité dans la nouvelle résolution, ...