Tray 인스턴스에서 메뉴 항목을 클릭하면 새 BrowserWindow가 시작됩니다. 창을 닫을 때마다 Tray 인스턴스를 포함하여 전체 앱도 종료됩니다.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) 이벤트를 처리해야한다는 것이 었습니다. –
제안 해 주셔서 감사합니다,하지만 내 애플 리케이션은 트레이 애플 리케이션을 종료하면 그 논리를 넣어 그냥 트레이 애플 리케이션입니까? 창문은 우리에 관한 것입니다. 전체 응용 프로그램은 트레이 응용 프로그램으로 실행됩니다. –