有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java小程序生命周期:init()和start()与destroy()和stop()之间的实际区别是什么?

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

我要寻找的是具体的例子,说明如果我把代码放在initvsstart,以及同样的destroyvsstop,它会产生什么影响。到目前为止,我唯一发现的是教程中对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组合,在执行某些特定操作(切换选项卡、点击“后退”按钮等)时,调用stop而不是destroy(或start而不是init


共 (1) 个答案

  1. # 1 楼答案

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

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

    我不知道是否有浏览器真的加载了小程序,所以这可能无关紧要。但据我所知,一般规则是:

    • init应该让小程序准备好运行,但不能真正启动它。从init返回时,小程序应处于“停止”状态。(已停止的小程序应该使用尽可能少的资源,并且不使用CPU。)
    • start应该启动小程序运行(启动线程等)。它通常不会读取参数和重新加载图像等,因为这应该在init中完成
    • stop应该撤销start所做的。。。将小程序返回到“停止”状态,但使其能够再次start。它不应该撤销init的任何工作,因为如果功能正确分离,这将使小程序无法启动
    • destroy应该在卸载小程序之前进行最后的清理。它基本上撤销了init。它不应该停止小程序;这是stop的工作,应该在调用destroy之前就完成了