我收到此错误Fatal Exception: java.lang.IllegalStateExceptionThis YouTubePlayer has been released
,但是没有显式调用release()
。这是发生崩溃的那段代码:
if(youtubePlayer != null){
time = youtubePlayer.getCurrentTimeMillis();//exception may occur
}
是否可以检查
youtubePlayer
是released
?有回叫吗?谢谢。 最佳答案
Youtube SDK中的大多数代码都被混淆了,这使得调试真的很困难。而且没有任何直接方法可以检查YoutubePlayer是否已发布,而也无济于事。
话虽如此,但我认为使YoutubePlayer为null(在onStop()中)似乎比适当的解决方案更像是一种hack。您应该在onDestroy()中释放YoutubePlayer,并且不要在任何地方手动将其分配为null。检查YoutubePlayer是否已释放的一种简单方法是将您的调用(例如youtubePlayer.loadVideo(),cueVideo(),getCurrentTimeMillis()等)放在try catch块中并捕获IllegalStateException异常。
根据Youtube SDK documentation上的错误:
因此,要创建YoutubePlayer的新实例,只需在catch块中调用initialize()方法。
例子:
public void setVideoId(final String videoId) {
if (videoId != null && !videoId.equals(this.videoId)) {
this.videoId = videoId;
if (youtubePlayer != null) {
try {
youtubePlayer.loadVideo(videoId);
} catch (IllegalStateException e) {
initialize(API_KEY, this);
}
}
}
}
@Override
public void onDestroy() {
if (youtubePlayer != null) {
youtubePlayer.release();
}
super.onDestroy();
}