electron 生命周期

生命周期事件:

  • reday: app初始化完成
  • dom-ready:一个窗口的文本加载完成,可以进行dom操作
  • did-finish-load: 导航完成时触发,选项卡旋转器停止旋转时(发生在dom-ready后)比如点击一个选项卡后,某一个选项下的dom加载完成后触发,
  • window-all-closed:所有窗口关闭时触发
  • before-quit:应用程序关闭窗口之前触发
  • will-quit:在窗口关闭并且应用退出时触发
  • quit:当所有窗口被关闭时触发
  • close:当窗口关闭时触发,此时应删除窗口应用(将保存窗体的引用对象(一些变量的释放)删除)

当监听了window-all-closed事件并且不做任何操作时时,before-quit、will-quit、quit,这三个事件就会失效

通过下面代码演示钩子加载的书顺序:

const { app, BrowserWindow } = require("electron");

// 创建窗口
function createWindow() {
  app.whenReady().then(() => {
    const mainWin = new BrowserWindow({
      width: 600,
      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-close");
      mainWin = null;
    });
  });
}

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

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");
});
app.on("ready", () => {
  console.log("111-ready");
  createWindow();
});

当未关闭窗体时,首次打印出了这三个钩子:

 当关闭窗口时,close和window-all-closed也被触发了,但是另外三个钩子未被触发,这里就证实了,当监听了window-all-closed事件时,before-quit、will-quit、quit,这三个事件就不会触发了,

 

此时需要你 主动 在window-all-closed事件钩子中做关闭操作。 

 

此时关闭窗体会打印 :

 

当未监听 window-all-closed 时,

关闭窗体时则打印:

 测试只有一个窗口,这里为主窗口,所以一关闭就都触发了,当实际有很多窗口时,主窗口888是会最后关闭的,所以这里8排在最后

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值