Detroy上的Android-MediaPlayer.release不工作

Detroy上的Android-MediaPlayer.release不工作,android,media-player,android-mediaplayer,release,Android,Media Player,Android Mediaplayer,Release,我已经搜索了许多关于堆栈溢出的答案,但没有一个对我有效,必须使用的是我使用的但不太有效的这个 private void releaseMediaPlayer() { if (mediaPlayer != null) { if(mediaPlayer.isPlaying()) { mediaPlayer.stop(); } mediaPlayer.release(); mediaPlayer = nul

我已经搜索了许多关于堆栈溢出的答案,但没有一个对我有效,必须使用的是我使用的但不太有效的这个

private void releaseMediaPlayer() {
    if (mediaPlayer != null) {
        if(mediaPlayer.isPlaying()) {
            mediaPlayer.stop();
        }
        mediaPlayer.release();
        mediaPlayer = null;
        }
    }
声明为:
MediaPlayer=newmediaplayer()

准备媒体播放器的方法如下:

public void playMp3(String _link){
        setVolumeControlStream(AudioManager.STREAM_MUSIC);
        mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);

    try {
        mediaPlayer.setDataSource(_link);
        mediaPlayer.prepareAsync();
        mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
            @Override
            public void onPrepared(MediaPlayer mp) {
                btnDegjo.setVisibility(View.VISIBLE);
            }
        });
    } catch (IOException e) {
        e.printStackTrace();
    }
}
当用户单击按钮时,mp3正在播放或暂停或停止。。 我的需要: 当用户点击后退按钮或onDestroy mediaPlayer释放时,方法
播放MP3(链接)被称为onCreate。。我不知道用户是立即返回还是播放音乐然后返回

@Override
    public void onBackPressed() {
    super.onBackPressed();
    releaseMediaPlayer();
}

@Override
    protected void onDestroy() {
    super.onDestroy();  
    releaseMediaPlayer();
}
当用户点击后退按钮或onDestroy应用程序停止工作时使用此代码。。 为什么?

编辑:

10-13 15:45:09.886:E/AndroidRuntime(10589):致命异常:main 10-13 15:45:09.886:E/AndroidRuntime(10589):进程:com.FS.myapp, PID:10589 10-13 15:45:09.886:E/AndroidRuntime(10589): java.lang.RuntimeException:无法暂停活动 {com.FS.myapp/com.FS.myapp.SS}:java.lang.NullPointerException 10-13 15:45:09.886:E/AndroidRuntime(10589):在 android.app.ActivityThread.performPauseActivity(ActivityThread.java:3242) 10-13 15:45:09.886:E/AndroidRuntime(10589):在 android.app.ActivityThread.performPauseActivity(ActivityThread.java:3193) 10-13 15:45:09.886:E/AndroidRuntime(10589):在 android.app.ActivityThread.handlePauseActivity(ActivityThread.java:3171) 10-13 15:45:09.886:E/AndroidRuntime(10589):在 android.app.ActivityThread.access$1000(ActivityThread.java:151)10-13 15:45:09.886:E/AndroidRuntime(10589):在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1338) 10-13 15:45:09.886:E/AndroidRuntime(10589):在 android.os.Handler.dispatchMessage(Handler.java:110)10-13 15:45:09.886:E/AndroidRuntime(10589):在 android.os.Looper.loop(Looper.java:193)10-13 15:45:09.886: E/AndroidRuntime(10589):在 android.app.ActivityThread.main(ActivityThread.java:5292)10-13 15:45:09.886:E/AndroidRuntime(10589):在 java.lang.reflect.Method.Invokenactive(本机方法)10-13 15:45:09.886:E/AndroidRuntime(10589):在 java.lang.reflect.Method.invoke(Method.java:515)10-13 15:45:09.886: E/AndroidRuntime(10589):在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:824) 10-13 15:45:09.886:E/AndroidRuntime(10589):在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:640)10-13 15:45:09.886:E/AndroidRuntime(10589):在 dalvik.system.Nativestar.main(本地方法)10-13 15:45:09.886: E/AndroidRuntime(10589):由以下原因引起:java.lang.NullPointerException 10-13 15:45:09.886:E/AndroidRuntime(10589):在 com.FS.myapp.SS.onPause(SS.java:62)10-13 15:45:09.886: E/AndroidRuntime(10589):在 android.app.Activity.performPause(Activity.java:5368)10-13 15:45:09.886:E/AndroidRuntime(10589):在 android.app.Instrumentation.callActivityOnPause(Instrumentation.java:1239) 10-13 15:45:09.886:E/AndroidRuntime(10589):在 android.app.ActivityThread.performPauseActivity(ActivityThread.java:3224) 10-13 15:45:09.886:E/AndroidRuntime(10589):。。。还有12个


stacktrace和onPause方法指示其中一个变量为null

快速修复方法可以是:

@Override 
protected void onPause() { 
    if (mediaPlayer != null && mediaPlayer.isPlaying()){
        mediaPlayer.pause();
    }

    if (btnPlay != null)
        btnPlay.setText("Play"); 

    super.onPause();
}

你能发布例外情况吗?当然我编辑了我的问题并添加了例外情况你能发布你的onPause()代码吗?
protectedvoid onPause(){
if(mediaPlayer.isPlaying()){mediaPlayer.pause();}
btnPlay.setText(“Play”);
超级.onPause();
很好,很高兴我能帮忙:)