首页 > 解决方案 > 重新启动 Electron 应用程序的正确方法是什么?

问题描述

在此 Electron 文档页面中,他们建议重新启动应用程序,应该执行app.quitapp.exit 调用之后执行app.relaunch

注意,该方法执行时不会退出应用,需要在调用app.relaunch后调用app.quit或app.exit才能让应用重启。

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

我知道这一点app.quitapp.exit但并不完全相同。前者可以被中断并触发一些事件,而后者将强制应用退出而不触发任何事件或允许应用取消操作。

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

  1. 一个喜欢app.quit或的理由app.exit
  2. 一个人必须奔跑app.quitapp.exit追赶的原因app.relaunch

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

包.json

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

main.js

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');
});

生成以下应用程序菜单:

在此处输入图像描述

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

标签: javascriptelectron

解决方案


重新启动电子应用程序的正确方法是:

app.relaunch()
app.exit()

官方文档


推荐阅读