setVideoPath Недопустимое состояние исключения - PullRequest
0 голосов
/ 18 января 2020

Я бегу через слайд-шоу в бесконечном l oop. Каждое «х» количество времени я переключаю воспроизведение видео. Сначала я останавливаю видео, а затем загружаю новое видео. Мое приложение падает, когда я устанавливаю путь к видео, с ошибкой, что есть недопустимое состояние. Это происходит только один раз каждые пару тысяч использований, поэтому я не могу повторить это. То есть, если я оставлю приложение открытым на 24 часа на 100 устройствах, это будет происходить один раз в день на одном устройстве.

runOnUiThread() {
    if (mVideoView!!.isPlaying) {
        mVideoView!!.stopPlayback()
    }
    mVideoView!!.setVideoPath(filePath)
    mVideoView!!.setOnErrorListener { mp, what, extra ->
            LOG.e("Media player error: $what extra: $extra")
            // Something's wrong, try again
            slideshowHandler.removeCallbacksAndMessages(null)
            slideshowHandler.postDelayed(slideshowRunner, 0)
            true
        }
        if (startTime > 0) {
            mVideoView!!.seekTo(startTime)
        }
        mVideoView!!.start()
    }
}


java.lang.IllegalStateException
    at android.media.MediaPlayer.prepareAsync(Native Method)
    at android.widget.VideoView.openVideo(VideoView.java:356)
    at android.widget.VideoView.setVideoURI(VideoView.java:265)
    at android.widget.VideoView.setVideoURI(VideoView.java:248)
    at android.widget.VideoView.setVideoPath(VideoView.java:239)

Есть мысли о том, что это может быть? Какое состояние является недействительным? Я делаю вещи в неправильном порядке?

Я не могу найти подобных проблем на SO. Приложение работает под управлением lollipop 5.1 (необходимо).

Редактировать: я исправляю это прямо сейчас, используя try / catch. Похоже, в Android есть какая-то основная ошибка, которая вызывает это.

...