当从托盘实例中单击菜单项时,我正在启动一个新的BrowserWindow。每当窗口关闭时,它也会退出包括托盘实例在内的整个应用程序。为了克服我使用下面的代码:BrowserWindow中的内存泄漏,Electron
click: function()
{
var win = new BrowserWindow({
width: 400,
height: 600,
resizable: false,
fullscreen: false,
title: 'About',
icon : __dirname+'/assets/logo/windowIcon.png'
})
win.setMenu(null)
win.loadURL(`file://${__dirname}/about.html`)
// win.webContents.openDevTools()
win.on('close', function (e)
{
e.preventDefault()
win.hide()
win.removeAllListeners('close')
})
}
但后来我发现,在关闭窗口后连BrowserWindow实例不会从内存丢弃/释放。
每次被点击菜单它会打开一个新的窗口,但在关闭它,它不会从内存中释放和过程只是栈到内存中。
如何在不终止Tray实例的情况下从内存中释放BrowserWindow实例?
嗨Vadim,我不想退出应用程序我只想从内存中清除BrowerWindow实例。现在我正在使用'e.preventDefault(); win.hide();”当窗户关闭时,我想因为我隐藏窗户,所以窗户停留在内存中。当我使用'win.close()'时,它也会退出应用程序。所以我的问题如何关闭窗口,而不必退出应用程序,并从内存中丢弃窗口实例。 –
@VaibhavSidapara我的观点是你需要处理['window-all-closed'](http://electron.atom.io/docs/api/app/#event-window-all-closed)事件。 –
谢谢你的建议,但我的应用程序只是一个托盘应用程序,如果我把这个逻辑它也会退出托盘应用程序?窗户只是一个关于我们的页面而已。整个应用程序作为托盘应用程序运行。 –