Applet 生命周期:init() 和 start() 以及 destroy() 和 stop() 之间的实际区别是什么?

2024-01-02

The javadoc http://download.oracle.com/javase/6/docs/api/java/applet/Applet.html and tutorial http://download.oracle.com/javase/tutorial/deployment/applet/appletMethods.html有关于四种小程序生命周期方法的信息(init() -> start() -> stop() -> destroy())。但他们大多用抽象语言交谈。

我正在寻找的是如果我将代码放入其中会产生影响的具体示例init vs start,类似地对于destroy vs stop。到目前为止我发现的唯一的东西是在教程的描述中destroy方法。它说:

注意:保留 destroy 方法尽可能短, 因为不能保证 这个方法将完全 被执行。 Java虚拟机 可能会在长时间销毁之前退出 方法已完成。

(我有点震惊,上面的内容不在 javadoc 中。)

Edit:更具体地说:任何人都可以提供一个浏览器 + JVM 组合,在执行某些特定操作(切换选项卡、点击“后退”按钮等)时,调用stop但不是destroy (or start但不是init)?


init and destroy分别在小程序加载或卸载时调用。当浏览器导航、切换选项卡等时,浏览器可以加载小程序并停止它,但不会销毁它。

start and stop在上述情况下,用于暂停和恢复小程序(当小程序变为或不再显示在页面上时)。

我不知道是否有浏览器确实保持小程序加载,所以这可能并不重要。但据我所知,一般规则是:

  • init应该让小程序准备好运行,但实际上并没有启动它。从以下位置返回后,小程序应处于“停止”状态init。 (停止的小程序应该使用尽可能少的资源,并且不使用 CPU。)
  • start应该启动小程序运行(启动线程等)。它通常不会读取参数并重新加载图像等等,因为这应该在init.
  • stop应该撤消什么start确实...将小程序返回到“停止”状态,但使其能够start再次。它不应该撤消任何init的工作,因为如果功能被正确分离,这将使小程序无法启动。
  • destroy应该在卸载小程序之前进行最后的清理。它基本上撤消了init。它不应该停止小程序;那是stop的工作,并且之前应该已经完成destroy叫做。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Applet 生命周期:init() 和 start() 以及 destroy() 和 stop() 之间的实际区别是什么? 的相关文章

随机推荐