feat: 应用单例模式

This commit is contained in:
alger
2025-01-17 22:35:33 +08:00
parent a94e0efba5
commit dfa175b8b2
+50 -32
View File
@@ -47,44 +47,62 @@ function initialize() {
initializeShortcuts(mainWindow); initializeShortcuts(mainWindow);
} }
// 应用程序准备就绪时的处理 // 检查是否为第一个实例
app.whenReady().then(() => { const isSingleInstance = app.requestSingleInstanceLock();
// 设置应用ID
electronApp.setAppUserModelId('com.alger.music');
// 监听窗口创建事件 if (!isSingleInstance) {
app.on('browser-window-created', (_, window) => { app.quit();
optimizer.watchWindowShortcuts(window); } 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', () => { app.on('browser-window-created', (_, window) => {
if (mainWindow === null) initialize(); optimizer.watchWindowShortcuts(window);
});
// 初始化应用
initialize();
// macOS 激活应用时的处理
app.on('activate', () => {
if (mainWindow === null) initialize();
});
}); });
});
// 监听快捷键更新 // 监听快捷键更新
ipcMain.on('update-shortcuts', () => { ipcMain.on('update-shortcuts', () => {
registerShortcuts(mainWindow); registerShortcuts(mainWindow);
}); });
// 所有窗口关闭时的处理 // 所有窗口关闭时的处理
app.on('window-all-closed', () => { app.on('window-all-closed', () => {
if (process.platform !== 'darwin') { if (process.platform !== 'darwin') {
app.quit(); app.quit();
} }
}); });
// 重启应用 // 重启应用
ipcMain.on('restart', () => { ipcMain.on('restart', () => {
app.relaunch(); app.relaunch();
app.exit(0); app.exit(0);
}); });
// 获取系统架构信息 // 获取系统架构信息
ipcMain.on('get-arch', (event) => { ipcMain.on('get-arch', (event) => {
event.returnValue = process.arch; event.returnValue = process.arch;
}); });
}