Javascript 重启Electron应用程序的正确方法是什么?
在此Electron文档中,他们建议重新启动应用程序时,应在调用Javascript 重启Electron应用程序的正确方法是什么?,javascript,electron,Javascript,Electron,在此Electron文档中,他们建议重新启动应用程序时,应在调用app.重新启动后执行app.quit或app.exit: 请注意,此方法在执行时不会退出应用程序,您必须在调用app.relaunch后调用app.quit或app.exit以重新启动应用程序 然而,经过实验,我发现顺序似乎并不重要。(请参见下面的示例。) 我知道app.quit和app.exit不太一样。前者可以被中断并触发一些事件,而后者将强制应用程序退出,而不会触发任何事件或允许应用程序取消操作 问题:假设强制应用程序退出总
app.重新启动后执行app.quit
或app.exit
:
请注意,此方法在执行时不会退出应用程序,您必须在调用app.relaunch后调用app.quit或app.exit以重新启动应用程序
然而,经过实验,我发现顺序似乎并不重要。(请参见下面的示例。)
我知道app.quit
和app.exit
不太一样。前者可以被中断并触发一些事件,而后者将强制应用程序退出,而不会触发任何事件或允许应用程序取消操作
问题:假设强制应用程序退出总是可以的,并且在应用程序退出之前我们没有任何任务要执行,是否存在:
选择app.quit
或app.exit
的原因
必须在app.重新启动后运行app.quit
或app.exit
的原因
下面是一个非常简单的电子应用程序:
package.json
main.js
生成以下应用程序菜单:
点击任何一个菜单项都会产生相同的结果:应用程序退出,然后重新启动。electron中有很多错误
你看这就是其中之一。。。(应用程序退出后重新启动工作)
--------------------------------------------------------------------------------------
/*app.quit()*/
app.quit
将优雅地退出您的应用程序
像这样的事件侦听器将退出
,退出
如果您使用app.quit退出就会被触发。。
因此,您可以使用event.preventDefault()
阻止应用程序终止
/*app.exit()*/
当使用app.exit()
时,如果即使设置了演示者也无法终止应用程序,则不会调用这些侦听器
--------------------------------------------------------------------------------------
我想现在您可以根据您的用例来决定在退出和退出之间应该使用什么
至于你的第二个问题,我没有确切的答案,因为在我看来,app.relaunch在app.exit之后有效。。我已经在v4和v5中对其进行了测试。。两者的结果相同
通常在退出或退出之前调用重新启动
并且应该遵循,因为它可能在将来的版本中得到解决
quit
优雅地关闭所有窗口,然后退出,而exit
只是终止应用程序,而不考虑任何其他内容,如节点中的process.exit
。为了安全起见,在大多数情况下,您都希望使用quit
最好先调用重新启动
,以防止出现争用情况。由于事件循环的工作方式,这在生产中几乎永远不会发生,但这只是一种良好的实践
重新启动electron应用程序的正确方法是:
app.relaunch()
app.exit()
看 你在考虑什么样的比赛条件?您是否有一个在开发过程中可能发生的事情的例子,即app.relaunch();app.quit()?GitHub中有我可以跟踪的bug吗?
const {app, BrowserWindow, Menu} = require('electron');
let mainWindow;
app.on('ready', () => {
Menu.setApplicationMenu(
Menu.buildFromTemplate([
{role: 'appMenu', submenu: [
{label: 'relaunch(); exit()', click() {
app.relaunch();
app.exit();
}},
{label: 'relaunch(); quit()', click() {
app.relaunch();
app.quit();
}},
{type: 'separator'},
{label: 'exit(); relaunch()', click() {
app.exit();
app.relaunch();
}},
{label: 'quit(); relaunch()', click() {
app.quit();
app.relaunch();
}}
]}
])
);
mainWindow = new BrowserWindow({width: 640, height: 480});
mainWindow.loadFile('index.html');
});
app.relaunch()
app.exit()