Исключение сбоя проигрывателя Youtube при возобновлении активности в Android

Я добавил проигрыватель YouTube для потокового видео. Видео приостанавливается, когда приложение находится в фоновом режиме, и возобновляется на переднем плане. Но в некоторых случаях происходит сбой, когда приходит состояние Resume. Скриншот PFB для Crashalytics: введите здесь описание изображения

Он показывает мертвый объект, найденный при возобновлении активности.

Вот мой код активности игрока на Youtube:

   @Override
protected void onDestroy() {
    Log.d("#ScreenONOFF","onDestroy" );
    YouTubeShareClass.getInstance().showInterestialAd(this,"Video Player");

    if (youTubePlayer != null) {
        youTubePlayer.release();
        youTubePlayer = null;
    }
    super.onDestroy();
    if (mReceiver != null) {
        unregisterReceiver(mReceiver);
    }
}

@Override
public void onResume()
{
    super.onResume();
    if (youTubePlayer != null && videoID != null) {
        youTubePlayer.loadVideo(videoID,currentPlayerTime);
        youTubePlayer.play();
    }
}

@Override
public void onPause()
{
    super.onPause();
    if (youTubePlayer != null) {
        if(youTubePlayer.isPlaying()) {
           currentPlayerTime = youTubePlayer.getCurrentTimeMillis();
            youTubePlayer.pause();
        }
    }
}

@Override
public void onInitializationSuccess(Provider provider, YouTubePlayer player, boolean wasRestored) {
    if (videoID != null) {
        youTubePlayer = player;
        if (youTubePlayer != null && mReceiver != null) {
            if (wasRestored) {
                player.play();
            } else {
                try {
                    player.loadVideo(videoID,0);
                } catch (IllegalStateException e) {
                    youTubeView.initialize(YouTubeConstants.youtube_API_key, this);
                }
            }
            mReceiver.player = player;
            player.setFullscreen(true);
        }
    }
}

person Saggy    schedule 25.08.2017    source источник


Ответы (1)


У меня такая же проблема. Для меня сложно воспроизвести ошибку, хотя я нашел трекер Google для этой проблемы (https://issuetracker.google.com/issues/35172585).

Цитирование этого ответа (android.os.DeadObjectException на com.google.android.youtube.api.jar.client.RemoteEmbeddedPlayer.x) У Google есть что сказать об ошибке:

общедоступный статический окончательный YouTubePlayer.ErrorReason UNEXPECTED_SERVICE_DISCONNECTION

Воспроизведение отменено, а проигрыватель отключен из-за неожиданного отключения от службы API YouTube. Любые дальнейшие вызовы этого экземпляра проигрывателя приведут к ошибкам, для возобновления воспроизведения необходимо создать новый экземпляр проигрывателя.

Я не могу на 100 % проверить правильность этого решения, потому что не могу воспроизвести ошибку, но это может помочь:

if(ytPlayer != null) {
    try {
        ytPlayer.loadVideo(videoId);
    } catch (IllegalStateException e) {
        initialize(API_KEY, this);
    }
}
person Community    schedule 20.04.2018