如果我的电子应用程序打开并关闭了大量BrowserWindow
个,那么每个应用程序是否都有唯一ID?
因此,在我的应用的一次运行中,如果我打开BrowserWindow
并关闭它,则打开一个新的BrowserWindow
:新的BrowserWindow
是否有可能和我关闭的那个id相同吗?
答案 0 :(得分:1)
您可以根据当前来源(1.8.4版本或2.0.0-beta.5)获得每个实例的唯一ID
在本机端BrowserWindow
实现继承自实际处理ID的TrackableObject
。 win.id
API看起来像this
int32_t Window::ID() const {
return weak_map_id();
}
weak_map_id()
返回的ID在TrackableObject
中构建,如this
weak_map_id_ = ++next_id_;
weak_map_->Set(isolate, weak_map_id_, wrapper);
其中next_id_
是可跟踪实例的静态成员,永远不会减少。
因此,无论删除如何,浏览器ID都应始终在应用程序的整个运行期间保持递增。
以下愚蠢的例子证实了行为
const { app, BrowserWindow } = require('electron')
let win = null
app.once('ready', () => {
setInterval(() => {
win = new BrowserWindow()
console.log(win.id)
}, 1000)
setInterval(() => {
win.destroy()
}, 2100)
})