如何删除失效侦听器

How to remove invalidation listener

我正在制作一个音乐应用程序,它在底部有一个滑块。为了解决我遇到的另一个问题,即监听器由于某种原因没有处于活动状态,我必须这样做,以便在事件发生时添加监听器,因为没有其他地方可以添加它。如何从对象中删除一个失效侦听器,然后添加另一个对象,这样我就没有大量的失效侦听器?

听众看起来像这样:

someMediaPlayer.currentTimeProperty().addListener(new InvalidationListener() 
            {
                public void invalidated(Observable ov) {

                    someMethod();

                }
            });

使用您发布的代码,您将永远无法删除它,因为您没有存储参考。每次 new InvalidationListener() 被调用时你都会得到一个新的引用。而是存储该 InvalidationListener 对象,然后您可以将其删除。

InvalidationListener listener = new InvalidationListener() 
        {
            public void invalidated(Observable ov) {

                someMethod();

            }
        };
someMediaPlayer.currentTimeProperty().addListener(listener);
....
someMediaPlayer.currentTimeProperty().removeListener(listener);