MediaPlayer TimeoutException

时间:2014-01-03 20:47:27

标签: java android android-mediaplayer timeoutexception

我制作了一个Android应用程序,现在它已经在Google Play上了。 但是现在有人报告了Crash,而堆栈跟踪说了以下内容:

java.util.concurrent.TimeoutException: android.media.MediaPlayer.finalize() timed out         after 10 seconds
at android.media.MediaPlayer.native_finalize(Native Method)
at android.media.MediaPlayer.finalize(MediaPlayer.java:1960)
at java.lang.Daemons$FinalizerDaemon.doFinalize(Daemons.java:187)
at java.lang.Daemons$FinalizerDaemon.run(Daemons.java:170)
at java.lang.Thread.run(Thread.java:856)

并且我的某个软件包中没有任何代码的迹象。我确实使用了MediaPlayer类。 谁可以帮助我在这里?

杰西。

4 个答案:

答案 0 :(得分:3)

在您的代码中调用MediaPlayer.release()(例如,在Activity.onPause()中)。它会导致MediaPlayer.finalize()中的工作量减少,异常就会消失。

答案 1 :(得分:1)

要捕获此错误,您可以在片段或活动中实现android.media.MediaPlayer.OnErrorListener。

/*
     * Called to indicate an error. Parameters
     * 
     * mp the MediaPlayer the error pertains to what the type of error that has
     * occurred: MEDIA_ERROR_UNKNOWN MEDIA_ERROR_SERVER_DIED extra an extra
     * code, specific to the error. Typically implementation dependant. Returns 
     * True if the method handled the error, false if it didn't. Returning
     * false, or not having an OnErrorListener at all, will cause the
     * OnCompletionListener to be called.
     */
    @Override
    public boolean onError(MediaPlayer mp, int what, int extras) {

        return true;
    }

创建MediaPlayer时,请务必致电

mediaPlayer.setOnErrorListener(this);

答案 2 :(得分:0)

一些想法:

  • 您找到了哪个帖子正在执行此操作吗?它似乎不是主要的UI线程,你应该能够 抓住那个例外。
  • 与之前的answer一样,你应该在释放播放器时考虑重新思考。
  • 我仍然面临的一个错误是audioflinger服务。它会导致所有正在运行的媒体播放器进入错误状态(使用错误代码(100,0)处理)。玩家进入错误状态,无法恢复原来的状态

答案 3 :(得分:-1)

我认为客户端上的mediaserver进程已崩溃。