gpt4 book ai didi

java - 安卓 : youtube player has been released

转载 作者:搜寻专家 更新时间:2023-10-30 21:06:21 24 4
gpt4 key购买 nike

我收到此错误 Fatal Exception: java.lang.IllegalStateException
此 YouTubePlayer 已发布
,但未明确调用 release()。这是发生崩溃的代码段:

if(youtubePlayer != null){
time = youtubePlayer.getCurrentTimeMillis();//exception may occur
}

是否可以检查 youtubePlayer 是否已发布?任何回调?谢谢。

最佳答案

Youtube SDK 中的大部分代码都经过混淆处理,因此很难调试。 没有任何直接方法来检查 YoutubePlayer 是否已发布这一事实也无济于事。

话虽如此,我认为让 YoutubePlayer 为 null(在 onStop() 中)对我来说似乎更像是一个黑客而不是一个正确的解决方案。您应该在 onDestroy() 中释放 YoutubePlayer,并且不要在任何地方手动将其分配为 null。检查 YoutubePlayer 是否已发布的一种简单方法是将调用(如 youtubePlayer.loadVideo()、cueVideo()、getCurrentTimeMillis() 等)放在 try catch block 中并捕获 IllegalStateException 异常。

根据Youtube SDK documentation关于错误:

public static final YouTubePlayer.ErrorReason UNEXPECTED_SERVICE_DISCONNECTION

Playback has been canceled and the player has been released due to an unexpected disconnection from the YouTube API service. Any further calls to this player instance will result in errors, a new player instance must be created to re-enable playback.

因此,要创建 YoutubePlayer 的新实例,只需调用 catch block 中的 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();
}

关于java - 安卓 : youtube player has been released,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21332765/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com