重新启动Electron应用程序的正确方法是什么?

时间:2019-05-04 12:23:56

标签: javascript electron

在此Electron文档page中,他们建议重新启动应用程序,应在对{{1}的调用后执行app.quitapp.exit }:

  

请注意,此方法在执行时不会退出应用程序,您必须在调用app.relaunch之后调用app.quit或app.exit才能重新启动应用程序。

但是,经过试验,我发现顺序似乎并不重要。 (请参见下面的示例。)

我知道app.relaunchapp.quit不太一样。前者可以被中断并触发一些事件,而后者将强制应用程序退出而不触发任何事件或允许应用程序取消操作。

问题:假设强制退出应用程序总是可以的,并且在应用程序退出之前我们没有任何任务可以执行,

  1. 偏好app.exitapp.quit的理由吗?
  2. 为什么必须在app.exit之后运行app.quitapp.exit

这是一个非常简单的电子应用程序:

package.json

app.relaunch

main.js

{
  "name": "burrito",
  "version": "1.0.0",
  "main": "main.js",
  "scripts": {
    "start": "electron ."
  },
  "devDependencies": {
    "electron": "^4"
  }
}

产生以下应用程序菜单:

enter image description here

单击任何菜单项都会产生相同的结果:应用程序退出然后重新启动。

3 个答案:

答案 0 :(得分:8)

重启电子应用的正确方法是:

app.relaunch()
app.exit()

请参见official documentation

答案 1 :(得分:1)

    quit相比,{li>

    exit可以正常关闭所有窗口然后退出,而process.exit则可以终止应用程序而无需考虑其他任何事情,例如Node中的quit。为了安全起见,在大多数情况下,您都想使用relaunch

  1. 最好先调用Swashbuckle.AspNetCore以防止出现竞争情况。由于事件循环的工作原理,在生产环境中几乎不会发生这种情况,但这只是一个好习惯。

答案 2 :(得分:-1)

电子中有很多虫子...

您看到的就是其中之一...(app.exit在app.exit之后重新启动)

-----------------------------------------------------------------------

/* app.quit() */

app.quit将正常退出您的应用。

如果您确实退出will-quit,则会触发诸如quitapp.quit之类的

事件监听器。 因此您可以使用event.preventDefault()来阻止应用终止。.

/* app.exit() */

在使用app.exit()时,这些监听器不会被调用,因此即使设置了演示者也无法终止应用程序。

-----------------------------------------------------------------------

我想现在您可以根据用例决定在退出和退出之间应该使用什么。

对于第二个问题,我没有可靠的答案,因为在我看来,app.relaunch在app.exit之后可以正常工作是一个错误。.我已经在v4和v5中对其进行了测试。 >

通常的做法是在退出或退出之前调用重新启动。

,应该遵循,因为将来的发行版中可能会解决它。.