Как удалить недействительный слушатель - PullRequest
0 голосов
/ 27 января 2020

Я делаю Musi c приложение, и оно включает в себя ползунок внизу. Чтобы исправить еще одну проблему, связанную с тем, что слушатель по какой-то причине не был активным, я должен был сделать так, чтобы слушатель добавлялся всякий раз, когда происходило событие, поскольку добавить его было некуда. Как я могу удалить слушателя аннулирования из объекта, чтобы затем добавить другой, чтобы у меня не было загрузок слушателей аннулирования?

Слушатель выглядит примерно так:

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

                    someMethod();

                }
            });

1 Ответ

3 голосов
/ 27 января 2020

С кодом, который вы разместили, вы никогда не сможете удалить его, так как не сохраняете ссылку. Каждый раз, когда вызывается new InvalidationListener(), вы получаете ссылку fre sh. Вместо этого сохраните этот объект InvalidationListener, а затем вы можете удалить его.

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

                someMethod();

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