Electron中BrowserWindow的ID在应用生命周期内是否唯一?关闭后会复用吗?
BrowserWindow ID的唯一性保证
好问题!我来给你明确一下Electron里BrowserWindow ID的唯一性规则:
单次应用运行周期内,ID绝对唯一,不会复用
Electron内部维护了一个全局递增的计数器,每次创建新的BrowserWindow实例时,都会给它分配当前计数器的数值,然后计数器自增。哪怕你关闭了之前的窗口,这个计数器也不会回退或重置,所以新窗口的ID永远是全新的,不会和任何已关闭或正在运行的窗口ID重复。举个实际代码验证的例子:
const { BrowserWindow } = require('electron'); // 第一个窗口 const win1 = new BrowserWindow(); console.log('第一个窗口ID:', win1.id); // 输出 1 // 关闭第一个窗口 win1.close(); // 第二个窗口 const win2 = new BrowserWindow(); console.log('第二个窗口ID:', win2.id); // 输出 2,绝不会是1 // 再关再建 win2.close(); const win3 = new BrowserWindow(); console.log('第三个窗口ID:', win3.id); // 输出 3注意:这个唯一性只针对单次应用运行。当你完全关闭Electron应用再重新启动时,计数器会从1重新开始,新创建的窗口ID会再次从1递增。
内容的提问来源于stack exchange,提问作者David Burson
相关产品推荐
相关产品推荐

