MediaCodec IllegalStateException调用停止

时间:2019-10-23 04:44:00

标签: java android android-mediacodec

当用户按下后退按钮时,我在onBackPressed中称呼以下内容:

@Override
public void onBackPressed(){
    if (mPlayer != null) {
        mPlayer.destroy();
    }
    finish();
    super.onBackPressed();
}

这是我的mPlayer.destroy();方法:

public void destroy(){
    if (prepareThread != null) {
        prepareThread.interrupt();
    }
    if (workerThread != null) {
        workerThread.interrupt();
    }
    if (decoder != null) {
        decoder.stop();
        decoder.release();
        decoder = null;
    }
    if (extractor != null) {
        extractor.release();
        extractor = null;
    }
}

在crashlytics中,出现以下崩溃,它指向decoder.stop();

Fatal Exception: java.lang.IllegalStateException
   at android.media.MediaCodec.native_stop(MediaCodec.java)
   at android.media.MediaCodec.stop + 2067(MediaCodec.java:2067)
   at com.my.package.Player.destroy + 823(Player.java:823)
   at com.my.package.Activity.onBackPressed + 1326(Activity.java:1326)

我不知道为什么会这样。我首先想到的是,在调用decoder.stop();之前,我的表面已被破坏,但事实并非如此。

任何帮助将不胜感激。

0 个答案:

没有答案