10

我制作了一个 Android 应用程序,现在它在 Google Play 上。但是现在有人报告了一个崩溃,并且堆栈跟踪说如下:

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

4 回答 4

4

调用MediaPlayer.release()您的代码(例如 in Activity.onPause())。这将导致做更少的工作MediaPlayer.finalize(),异常应该消失。

于 2015-02-06T09:59:02.430 回答
1

要捕获此错误,您可以在 Fragment 或 Activity 中实现 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);
于 2017-05-30T16:27:03.737 回答
0

一些想法:

  • 您是否找到了哪个线程正在执行此操作?它似乎不是主 UI 线程,您应该能够捕获该异常。
  • 像之前的答案一样,您应该在发布播放器时真正考虑重新考虑。
  • 我仍然面临的一个错误是使用 audioflinger 服务。它会导致所有正在运行的媒体播放器进入错误状态(使用错误代码 (100, 0) 处理)。播放器进入错误状态,无法恢复原状
于 2015-10-28T07:08:23.820 回答
-1

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

于 2014-01-03T21:11:01.040 回答