java - Applet 生命周期 : what's the practical difference between init() & start(), 和 destroy() & stop()?

标签 java applet lifecycle

javadoctutorial有关于四个小程序生命周期方法的信息(init() -> start() -> stop() -> destroy())。但他们主要用抽象语言交谈。

我正在寻找的是具体的例子,说明如果我将我的代码放在 initstart 中,什么时候会有所不同,对于 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)?

最佳答案

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

startstop 用于暂停和恢复 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/

相关文章:

java - 静态方法不能访问类的实例成员

Java Swing 小程序 : How to slow or delay paint() without slowing down the entire program

android - 重新启动 Activity 中的 fragment

java - 小程序卡在加载中

java - 如何在没有弹出窗口的情况下通过 JNLP 授予 java 小程序所有权限

android - 从服务更新 Activity 的数据

objective-c - 简而言之,如何选择@property的属性?

java - jpa mysql 表不存在 autoGenerate 不起作用

java - 找不到资源错误 404

java - 使用 Scribe 获取带有特定主题标签的推文