feat: 应用单例模式

This commit is contained in:
alger
2025-01-17 22:35:33 +08:00
parent a94e0efba5
commit dfa175b8b2

View File

@@ -47,44 +47,62 @@ function initialize() {
initializeShortcuts(mainWindow);
}
// 应用程序准备就绪时的处理
app.whenReady().then(() => {
// 设置应用ID
electronApp.setAppUserModelId('com.alger.music');
// 检查是否为第一个实例
const isSingleInstance = app.requestSingleInstanceLock();
// 监听窗口创建事件
app.on('browser-window-created', (_, window) => {
optimizer.watchWindowShortcuts(window);
if (!isSingleInstance) {
app.quit();
} else {
// 当第二个实例启动时,将焦点转移到第一个实例的窗口
app.on('second-instance', () => {
if (mainWindow) {
if (mainWindow.isMinimized()) {
mainWindow.restore();
}
mainWindow.show();
mainWindow.focus();
}
});
// 初始化应用
initialize();
// 应用程序准备就绪时的处理
app.whenReady().then(() => {
// 设置应用ID
electronApp.setAppUserModelId('com.alger.music');
// macOS 激活应用时的处理
app.on('activate', () => {
if (mainWindow === null) initialize();
// 监听窗口创建事件
app.on('browser-window-created', (_, window) => {
optimizer.watchWindowShortcuts(window);
});
// 初始化应用
initialize();
// macOS 激活应用时的处理
app.on('activate', () => {
if (mainWindow === null) initialize();
});
});
});
// 监听快捷键更新
ipcMain.on('update-shortcuts', () => {
registerShortcuts(mainWindow);
});
// 监听快捷键更新
ipcMain.on('update-shortcuts', () => {
registerShortcuts(mainWindow);
});
// 所有窗口关闭时的处理
app.on('window-all-closed', () => {
if (process.platform !== 'darwin') {
app.quit();
}
});
// 所有窗口关闭时的处理
app.on('window-all-closed', () => {
if (process.platform !== 'darwin') {
app.quit();
}
});
// 重启应用
ipcMain.on('restart', () => {
app.relaunch();
app.exit(0);
});
// 重启应用
ipcMain.on('restart', () => {
app.relaunch();
app.exit(0);
});
// 获取系统架构信息
ipcMain.on('get-arch', (event) => {
event.returnValue = process.arch;
});
// 获取系统架构信息
ipcMain.on('get-arch', (event) => {
event.returnValue = process.arch;
});
}