javadoc和 tutorial有关于四个小程序生命周期方法的信息(init() -> start() -> stop() -> destroy()
)。但他们主要用抽象语言交谈。
我正在寻找的是具体的例子,说明如果我将我的代码放在 init
和 start
中,什么时候会有所不同,对于 destroy< 也是如此
与 停止
。到目前为止,我唯一发现的是教程对 destroy
方法的描述。它说:
Note: Keep implementations of the destroy method as short as possible, because there is no guarantee that this method will be completely executed. The Java Virtual Machine might exit before a long destroy method has completed.
(我有点震惊,上面没有在 javadoc 中。)
编辑:更具体地说:任何人都可以提供一个浏览器 + JVM 组合,在某些特定操作(切换选项卡、点击“后退”按钮等)时调用 停止
但不是destroy
(或start
但不是init
)?
最佳答案
init
和 destroy
分别在小程序加载或卸载时调用。浏览器可以加载小程序并停止它,但不会销毁它,当四处导航、切换选项卡等时。
start
和 stop
用于暂停和恢复 applet,在上述情况下(当 applet 显示或不再显示在页面上时)。
我不知道是否有任何浏览器确实保持小程序加载,所以这可能无关紧要。但据我所知,一般规则是:
init
应该让 applet 准备好运行,但实际上并没有启动它。从init
返回时,applet 应处于“停止”状态。 (停止的小程序应该使用尽可能少的资源,并且不使用 CPU。)start
应该启动小程序运行(启动线程等)。它通常不会读取参数和重新加载图像以及所有这些,因为这应该在init
中完成。stop
应该撤消start
所做的...将 applet 返回到“已停止”状态,但让它能够再次start
.它不应撤消init
的任何工作,因为如果正确分离功能,这会使小程序无法启动。destroy
应该在卸载 applet 之前进行任何最后的清理。它基本上撤消了init
。它不应该停止小程序;这是stop
的工作,应该在调用destroy
之前完成。
关于java - Applet 生命周期 : what's the practical difference between init() & start(), 和 destroy() & stop()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3661679/