当我在后退按钮上添加 onpause 方法时,铃声应用程序没有逻辑崩溃

Not logic crash of ringtone app when I add onpause method on back button

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

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

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

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

现在,当我按下返回键时,应用程序崩溃而不是返回(在我添加 onPause 方法之前有效)onPause 运行良好,因为如果我按下主页按钮声音停止我在 [=21 中收到此错误=]:

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

...

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

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

至:

mp.release();
mp = null;