当我在后退按钮上添加暂停方法时,不是铃声应用程序的逻辑崩溃

时间:2017-04-15 22:19:43

标签: android android-mediaplayer media

我有使用媒体播放器播放声音的应用。当我按下后退按钮时,我用来停止声音的代码是:

@Override
public void onBackPressed() {
    super.onBackPressed();
    if (mp != null) {
        mp.reset();
        mp.release();
    }
   finish();
}

这段代码运行良好,但是如果app突然中断,声音仍在播放,则需要停止,所以我在onPause方法中添加了相同的东西(如果我添加onStop方法也是如此)。

  @Override
protected void onPause() {
    super.onPause();
    if (mp != null) {
        mp.reset();
        mp.release();
    }
}

现在,当我按下时,应用程序崩溃而不是返回(在我添加onPause方法之前有效)onPause工作正常,因为如果我按下主页按钮,声音会停止我在logcat中收到此错误:< / p>

java.lang.RuntimeException: Unable to pause activity
java.lang.IllegalStateException

...

1 个答案:

答案 0 :(得分:1)

您无法重置已发布的MediaPlayer。因为在释放后,用于播放声音的资源不可用。你应该改变:

mp.reset();
mp.release();

为:

mp.release();
mp = null;