我在 Eclipse RCP 应用程序的编辑器中使用 JavaFX 来播放视频。在编辑器 UI 的初始化过程中,我做了一些类似的事情:
canvas = new FXCanvas(imageSection, SWT.NONE);
canvas.setScene(createScene());
...
// createScene()
Media media = new Media(file.toURI().toString());
MediaPlayer player = new MediaPlayer(media);
MediaView view = new MediaView(player);
...
player.play();
在编辑器的 dispose 方法中,我确保视频停止播放:
@Override
public void dispose() {
player.stop();
super.dispose();
}
但是,如果我想在编辑器关闭后(无论是从我自己的应用程序还是从 Windows 资源管理器)删除正在编辑器中播放的视频资源,则无法删除该文件,因为我的应用程序仍在使用它。看起来 fx 的 Media 对象从未释放视频资源。我在 javafx 文档中找不到任何指针来要求 Media 或 MediaPlayer 对象在编辑器关闭时释放资源。
我的问题:如何确保 javafx 在编辑器关闭时释放视频文件?