【发布时间】:2010-09-19 23:05:57
【问题描述】:
假设我在浏览器的页面中运行了一个小程序。 当浏览器被用户关闭时会发生什么?
小程序是否得到通知,以便它可以在其一侧执行某种关闭操作(关闭打开到服务器的连接,清理静态变量,...)?
另外,我假设相同的行为将适用于页面刷新或页面导航(而不是浏览器关闭)。浏览器保持打开状态,但小程序消失了。虽然当你关闭浏览器时你也关闭了 JVM,所以我现在不确定。
谢谢, JB
【问题讨论】:
假设我在浏览器的页面中运行了一个小程序。 当浏览器被用户关闭时会发生什么?
小程序是否得到通知,以便它可以在其一侧执行某种关闭操作(关闭打开到服务器的连接,清理静态变量,...)?
另外,我假设相同的行为将适用于页面刷新或页面导航(而不是浏览器关闭)。浏览器保持打开状态,但小程序消失了。虽然当你关闭浏览器时你也关闭了 JVM,所以我现在不确定。
谢谢, JB
【问题讨论】:
大多数时候会调用destroy,但是在关闭窗口的情况下没有足够的时间来完成所需的任务。
刷新时有足够的时间,用Backword导航
【讨论】:
是的,destroy() 方法应该在浏览器卸载对象之前调用。
destroy() 是 Java 小程序的四个“生命周期方法”中的最后一个(其他是 init(), start() 和 stop() )。它们实际上在不同的时间被调用,具体取决于您的浏览器和虚拟机。如果您想知道每个方法的确切调用时间,请在您的小程序中实现每个方法,并 System.out 一些反馈。
理想情况下,destroy() 应该由环境调用,并且应该只调用一次。如果似乎没有调用destroy(),则可以声明一个公共的finalize() 方法,该方法调用destroy。您也可以尝试在窗口对象卸载时从 javascript 调用 destroy(),但同样,请确保您没有不必要地调用 destroy()。
public void finalize () {
destroy();
}
【讨论】: