next up previous
suivant: L'applet est un espace monter: Applets précédent: Un premier exemple

Cycle de vie d'une applet

Le cycle de vie de l'applet est déterminé par celui de la page dans laquelle elle se trouve.

Premier temps: le chargement (loading). Le navigateur affiche une page contenant une applet. Il charge le code du programme (fichier .class) et exécute la méthode init qui a pour type public void init().

Deuxième temps: le démarrage. La méthode start qui a pour type public void start() est exécutée.

Troisième temps: l'arrêt. La méthode stop qui a pour type public void stop() est exécutée.

Quatrième temps: la destruction. La méthode destroy qui a pour type public void destroy() est exécutée.

On voit qu'il y a deux méthodes pour débuter (init et start) et deux méthodes pour arrêter (stop et destroy). En fait, ces méthodes ne font pas doublons, elles servent à gérer deux types de situation différentes.

Les méthodes init et destroy sont exécutées une seule fois lors de l'exécution d'une applet, respectivement au tout début et en toute fin de l'exécution.

Les méthodes start et stop peuvent être exécutées plusieurs fois dans la vie de l'applet en fonction de la visibilité de la page HTML qui la contient. Par exemple, quand l'utilisateur charge une nouvelle page dans le navigateur, l'applet est stoppée (méthode stop est exécutée), mais susceptible d'être redémarée (méthode start) plus tard, par exemple si l'utilisateur appuie sur la touche de retour en arrière.

Voici par exemple une séquence d'exécution possible des méthodes d'une applet:

init
start
stop
start
stop
start
stop
destroy

Ces quatre méthodes sont définies et déclarées dans la classe Applet, mais elles ne font rien. Il faut les redéfinir dans les sous-classes que l'on écrit de telle sorte que l'applet ne fasse rien et ne consomme pas de ressource quand la page qui la contient n'est pas visible.

Dans l'exemple AppPremierExemple, on n'a défini que init. Les trois autres méthodes sont héritées et ne font rien.

Voici une Applet qui permet de suivre plus ou moins les appels aux trois méthodes. Ces appels étant faits par le navigateur, cela peut changer d'un type de navigateur à l'autre et être encore différent dans appletviewer.

import java.applet.*;
import java.awt.*;
import javax.swing.*;
public class CycleDeVie extends Applet{
	JFrame f;
	TextArea ta;
    public void init(){
	f = new JFrame("le titre");
	f.setSize(new Dimension(400,400));
	ta = new TextArea(12,60);
	f.add(ta);
	f.setVisible(true);
	// f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	ta.append("méthode init appelée\n");
    }
    public void start(){
	ta.append("méthode start appelée\n");
    }	
    public void stop(){
	ta.append("méthode stop appelée\n");
    }
}

Voici l'exécution de l'applet CycleDeVie:


next up previous
suivant: L'applet est un espace monter: Applets précédent: Un premier exemple
Barthelemy Francois 2006-03-08