# 小程序的生命周期

> 原文： [https://docs.oracle.com/javase/tutorial/deployment/applet/lifeCycle.html](https://docs.oracle.com/javase/tutorial/deployment/applet/lifeCycle.html)

applet 可以通过以下方式对重大事件做出反应：

*   它可以 _ 初始化 _ 本身。
*   它可以 _ 启动 _ 运行。
*   它可以 _ 停止 _ 运行。
*   它可以执行 _ 最终清理 _，为卸载做准备。

本节介绍一个使用所有这些方法的新 applet `Simple`。与 Java 应用程序不同，applet 执行 _ 而不是 _ 需要实现`main`方法。

这是`Simple`小程序。

<noscript>A browser with JavaScript enabled is required for this page to operate properly.</noscript>

* * *

**Note:**  If you don't see the example running, you might need to enable the JavaScript interpreter in your browser so that the Deployment Toolkit script can function properly.

* * *

以下是`Simple` applet 的源代码。这个 applet 在遇到生命中的一个重要里程碑时会显示一个描述性字符串，例如当用户第一次访问 applet 所在的页面时。

```
import java.applet.Applet;
import java.awt.Graphics;

//No need to extend JApplet, since we don't add any components;
//we just paint.
public class Simple extends Applet {

    StringBuffer buffer;

    public void init() {
        buffer = new StringBuffer();
        addItem("initializing... ");
    }

    public void start() {
        addItem("starting... ");
    }

    public void stop() {
        addItem("stopping... ");
    }

    public void destroy() {
        addItem("preparing for unloading...");
    }

    private void addItem(String newWord) {
        System.out.println(newWord);
        buffer.append(newWord);
        repaint();
    }

    public void paint(Graphics g) {
	//Draw a Rectangle around the applet's display area.
        g.drawRect(0, 0, 
		   getWidth() - 1,
		   getHeight() - 1);

	//Draw the current string inside the rectangle.
        g.drawString(buffer.toString(), 5, 15);
    }
}

```

* * *

**Note:** In this example, the `Applet` class is extended, not the Swing `JApplet` class, as Swing components do not need to be added to this applet.

* * *

由于 applet 被加载，你应该看到文本“初始化......开始......”。加载 applet 时，会发生以下情况：

*   创建 applet 的控制类（`Applet`子类）的实例。
*   applet 初始化自己。
*   小程序开始运行。

例如，当用户离开页面以转到另一页面时，浏览器将停止并销毁该小程序。小程序的状态不会保留。当用户返回页面时，浏览器初始化并启动 applet 的新实例。

刷新或重新加载浏览器页面时，将停止并销毁 applet 的当前实例，并创建新实例。

当用户退出浏览器时，applet 有机会在浏览器退出之前停止自身并执行最终清理。

[下载 _Simple Applet_ 示例的源代码](examplesIndex.html#Simple)进行进一步实验。