本文是为了解决多次双击应用图标时创建多个应用实例的问题
达到的效果:每次双击应用或打开应用时,不会创建多个实例,而是激活已经打开的主窗体。
实际上这种方案并不是只创建一个实例,而是在窗体打开时判断如果已经存在实例,则激活已经打开的示例并退出当前打开的示例,效果上就是只有一个实例
上代码
electron 2.x版本使用以下方式
// 实现单例,在启动第二个实例后,激活主窗口,然后退出第二个实例
const shouldQuit = app.makeSingleInstance(() => {
if (mainWindow) {
if (mainWindow.isMinimized()) mainWindow.restore()
mainWindow.focus()
}
})
shouldQuit && app.quit()
electron 3.x版本使用以下方式
const getTheLock = app.requestSingleInstanceLock()
if (!getTheLock) {
app.quit()
} else {
app.on('second-instance', (event, commandLine, workingDirectory) => {
if (mainWindow) {
if (mainWindow.isMinimized()) mainWindow.restore()
mainWindow.focus()
}
})
app.on('ready', createWindow)
}
代码位置如下