Electron生命周期事件

生命周期事件

  • ready app完成初始化操作会触发一次,用于加载窗口
  • dom-ready 一个窗口中文本加载完成
  • did-finish-load 导航完成时触发
  • window-all-closed 所有窗口关闭后触发
  • before-quit 关闭窗口前触发
  • will-quit 窗口关闭并且应用退出时触发
  • quit 当所有窗口被关闭时触发
  • closed 当窗口关闭时触发,此时应删除窗口引用

演示代码

main.js

const { app, BrowserWindow } = require('electron')

//创建窗口
function createWindow() {
    let mainWin = new BrowserWindow({
        width: 800,
        height: 400
    })

    mainWin.loadFile('index.html')

    mainWin.webContents.on('did-finish-load', () => {
        console.log('333-------->did-finish-load')
    })

    mainWin.webContents.on('dom-ready', () => {
        console.log('222-------->dom-ready')
    })

    mainWin.on('close', () => {
        console.log('888---->window1 is closed')
        mainWin = null      //删除引用,释放内存,防止内存泄露
    })

}

app.on('ready', () => {
    console.log('111--->ready')
    createWindow()
})

app.on('window-all-closed', () => {
    console.log('444---->window-all-closed')
})

app.on('before-quit', () => {
    console.log('555---->before-quit')
})

app.on('will-quit', () => {
    console.log('666---->will-quit')
})

app.on('quit', () => {
    console.log('777--->quit')
})

运行然后关闭窗口,命令行中发现应用没有结束,按下ctrl+c,其输出结果如下

111--->ready
222-------->dom-ready
333-------->did-finish-load
888---->window1 is closed
444---->window-all-closed
555---->before-quit

我们发现will-quitquit的打印并没有出现,这是因为我们如果去监听window-all-closed事件的话,则需要手动去调用退出方法,否则不会退出自然就没有will-quitquit相应的内容输出了。

代码修改如下

app.on('window-all-closed', () => {
    console.log('444---->window-all-closed')
    app.quit();
})
最后修改:2022 年 08 月 26 日
如果觉得我的文章对你有用,请随意赞赏