Electron生命周期

app 生命周期

1
2
3
4
5
6
7
8
9
10
11
12
13
14

will-finish-launching:当应用程序完成基础的启动的时候被触发。

ready: app初始化完成

before-quit:窗口关闭前触发

will-quit:窗口关闭且应用退出时触发

quit:当所有窗口被关闭时触发

window-all-closed:所有窗口都被关闭时触发


BrowserWindow 生命周期

1
2
3
4
5
ready-to-show:当页面已经渲染完成(但是还没有显示) 并且窗口可以被显示时触发

close:在窗口要关闭的时候触发。

closed:在窗口关闭时触发 当你接收到这个事件的时候, 你应当移除相应窗口的引用对象,避免再次使用它.

在项目中追加如下代码,可以在console中显示相关生命周期执行顺序。

示例代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
// main.js

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

if (require('electron-squirrel-startup')) {
app.quit();
}

const createWindow = () => {
// Create the browser window.
const mainWindow = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
preload: path.join(__dirname, 'preload.js'),
},
});

// and load the index.html of the app.
mainWindow.loadFile(path.join(__dirname, 'index.html'));

// Open the DevTools.
// mainWindow.webContents.openDevTools();

mainWindow.on('ready-to-show', () => {
console.log('\twindow 1 -> ready-to-show')
});

mainWindow.on('close', () => {
console.log('\twindow 2 -> close')
});

mainWindow.on('closed', () => {
console.log('\twindow 3 -> closed')
})

};


app.on('will-finish-launching', () => {
console.log('app 1 -> will-finish-launching')
});
app.on('ready', () => {
console.log('app 2 -> ready')
createWindow()
});

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

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

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

app.on('window-all-closed', () => {
if (process.platform !== 'darwin') {
app.quit();
}
console.log('app 6 -> window-all-closed')
});


Electron生命周期
http://example.com/2023/02/24/Electron生命周期/
作者
Ray
发布于
2023年2月24日
许可协议