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
: