java小程序生命周期:init()和start()与destroy()和stop()之间的实际区别是什么?
javadoc和tutorial有关于四种小程序生命周期方法(init() -> start() -> stop() -> destroy()
)的信息。但他们大多用抽象的语言交谈
我要寻找的是具体的例子,说明如果我把代码放在init
vsstart
,以及同样的destroy
vsstop
,它会产生什么影响。到目前为止,我唯一发现的是教程中对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 楼答案
加载或卸载小程序时分别调用
init
和destroy
。浏览器可以在四处导航、切换选项卡等时加载并停止小程序,但不能销毁它start
和stop
用于暂停和恢复小程序,在上述情况下(当小程序变成或不再显示在页面上时)我不知道是否有浏览器真的加载了小程序,所以这可能无关紧要。但据我所知,一般规则是:
init
应该让小程序准备好运行,但不能真正启动它。从init
返回时,小程序应处于“停止”状态。(已停止的小程序应该使用尽可能少的资源,并且不使用CPU。)李>start
应该启动小程序运行(启动线程等)。它通常不会读取参数和重新加载图像等,因为这应该在init
中完成李>stop
应该撤销start
所做的。。。将小程序返回到“停止”状态,但使其能够再次start
。它不应该撤销init
的任何工作,因为如果功能正确分离,这将使小程序无法启动李>destroy
应该在卸载小程序之前进行最后的清理。它基本上撤销了init
。它不应该停止小程序;这是stop
的工作,应该在调用destroy
之前就完成了李>