我在一个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在编辑器关闭时释放视频文件?
不管怎样,我把我的问题发布在了Java论坛上。作为回应,我被指到这张吉拉门票:http://javafx-jira.kenai.com/browse/RT-18224
罚单上的建议对我的情况没有帮助,所以我只能坚持我的变通办法。