Большая часть кода в SDK Youtube запутана, что делает его очень трудным для отладки. И тот факт, что нет никакого прямого метода для проверки того, был ли выпущен YoutubePlayer или нет, тоже не помогает.
Сказав, что я думаю, что делает YoutubePlayer нуль (в OnStop()), кажется, больше взломать чем правильное решение мне. Вы должны освободить YoutubePlayer в onDestroy() и не назначать вручную его нигде в любом месте. Один простой подход для проверки того, был ли выпущен YoutubePlayer или нет, - , выложите ваши вызовы (например, youtubePlayer.loadVideo(), cueVideo(), getCurrentTimeMillis() и т. Д.) В блок catch try и поймаете исключение IllegalStateException.
Согласно Youtube SDK documentation об ошибках:
общественности статической окончательный YouTubePlayer.ErrorReason UNEXPECTED_SERVICE_DISCONNECTION
воспроизведение было отменено, и игрок был освобожден из-за неожиданного отключения от API YouTube оказание услуг. Любые дальнейшие вызовы на этот проигрыватель приведут к ошибкам, для повторного включения воспроизведения необходимо создать экземпляр нового игрока .
Итак, чтобы создать новый экземпляр YoutubePlayer, просто вызовите метод initialize() в блоке catch.
Пример:
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();
}
Можете ли вы пост, как вы создаете экземпляр youtubePlayer? Также вы выполняете любые слушатели? – Kakarot
Вы используете YouTubePlayerFragment или YouTubePlayerView или YouTubeStandalonePlayer – Kakarot
@Kakarot, Привет, Я использую YouTubePlayerSupportFragment' - для просмотра yt и интерфейса YouTubePlayer для проигрывателя. Вот код инициализации: 'youTubeView.initialize (YouTubeUtils.DEVELOPER_KEY, \t \t \t \t \t mPlayerInitializedListener);' и я получаю экземпляр игрока в этом обратном: 'общественного недействительного onInitializationSuccess (YouTubePlayer.Provider провайдера, \t \t \t \t конечный игрок YouTubePlayer, boolean wasRestored) {...} '. Спасибо –