トレイ項目からメニュー項目をクリックしたときに新しい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-allclosed)イベントを処理する必要があるということでした。 –
提案していただきありがとうございますが、もし私がそのロジックを置くだけで私のアプリはトレイアプリでもあり、トレイアプリを終了するでしょうか?ウインドウは、私たちのことだけにほかならない。アプリ全体がトレイアプリケーションとして実行されます。 –