GWT-是否需要在分离/卸载时手动删除本机事件处理程序?

问题描述 投票:1回答:1

如果将小部件添加到面板(DOM)以及本机处理程序(例如,ClickHanlder或MouseDownHandler)中,但不保留对它们的引用,则需要在分离/卸载时手动将其从注册中删除,以避免内存泄漏或错误的内存管理?

示例:

//at first, somewhere locally
Button b = new Button("My button");
b.addClickHandler(new ClickHandler(){...}) // or just (event -> {do stuff here})
globalPanel.add(b); //some generic scope panel

//later that evening...
globalPanel.clear();
//then maybe do other similar stuff, adding widgets and handlers, repeatedly 

因此,需要保留处理程序注册并在其他onDetach / onUnload调用中将其删除吗?因为在这种情况下,没有保存按钮“ b”或点击处理程序的引用。

谢谢。

java memory-management gwt
1个回答
0
投票

您不需要删除处理程序。

GWT实际上做得更多,它使用位域来吸收DOM事件,以解决一些旧的循环引用浏览器问题。尽管如今它已无用,但所有浏览器都能正确处理循环引用。此>10 years old article中的更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.