这是我的代码:
public void run() {
String filePath = queue.poll();
// Nothing more to play
if (filePath == null) {
isPlaying = false;
return;
}
isPlaying = true;
File file = new File(filePath);
String uriString = file.toURI().toString();
player = new MediaPlayer(new Media(uriString));
player.play();
player.setOnEndOfMedia(this);
}
如您所见,重复调用run()。在每次调用时,它从队列中获取head元素并播放它。
有时它会起作用,有时候游戏突然结束,onEndOfMedia永远不会开火。
该代码段没有显示,但我确实尝试重写onError,捕获异常等。有时,该剧仍然突然结束。
也许我应该从特定的线程中解雇它?
编辑:现在说太早,但是让玩家成为一个字段变量可能已经解决了问题。我的球员在比赛时收集了垃圾吗?
虽然在这:这是正确的做事方式吗?它是否会引入任何内存泄漏?