Я бегу через слайд-шоу в бесконечном 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 есть какая-то основная ошибка, которая вызывает это.