删除actionListeners

时间:2013-05-24 09:08:53

标签: java actionlistener

我正在用Java(J2ME)构建一些GUI,并怀疑避免与actionListeners有关的资源/内存泄漏的最佳做法。

假设我有一个类对象,它有一个成员变量,可以添加一个actionListener。在对象超出范围之前,是否需要显式删除此actionListener?通过不删除actionListener,当MyPanel类对象超出范围时,是否会创建内存/资源泄漏?

public class MyPanel implements ActionListener
{

    private LabelButton _button;

    public MyPanel()
    {
        _button.addActionListener(this);
    }

    ... 
}

2 个答案:

答案 0 :(得分:3)

使用getListeners / getActionListeners,您可以获取在指定元素处注册的所有侦听器,使用removeActionListener,您可以从元素中删除侦听器

示例:

for(ActionListener act : buttonToBeFreedFromListeners.getActionListeners()) {
    buttonToBeFreedFromListeners.removeActionListener(act);
}

只需注意:只要您不保存对元素中注册的侦听器的引用,GarbageCollector会在拾取元素时选择侦听器,因为它们只有对它的引用。

答案 1 :(得分:-1)

我认为你不需要明确删除,java在大多数情况下需要注意,我现在要做的就是不用担心,如果内存泄漏那么你可以使用像JProfiler这样的专用软件