当用户按下后退按钮时,我在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();
之前,我的表面已被破坏,但事实并非如此。
任何帮助将不胜感激。