So geben Sie Android MediaPlayer ordnungsgemäß frei

Ich versuche, meiner Android-App eine Schaltfläche hinzuzufügen, über die beim Tippen auf die Schaltfläche eine MP3-Datei abgespielt wird. Ich habe es zum Laufen gebracht, aber es gibt keine Möglichkeit, das mediaPlayer-Objekt freizugeben - daher wird es auch dann wiedergegeben, wenn ich die Aktivität verlasse. Wenn ich das MediaPlayer-Objekt außerhalb meiner react () -Methode initialisiere (was beim Drücken der Schaltfläche aufgerufen wird), wird das Schließen der App beim Öffnen der Aktivität erzwungen. Wenn ich den MediaPlayer jedoch innerhalb der react () -Methode initialisiere, kann ich mplayer.release nicht in der onQuit () -Methode verwenden. Was sehe ich hier nicht?

    public void react(View view) {
    MediaPlayer mediaPlayer = MediaPlayer.create(ToBeOrNot.this, R.raw.achord);
    mediaPlayer.start();
}
protected void onStop(){
    mediaPlayer.release();
    mediaPlayer = null;
}

Funktioniert aus offensichtlichen Gründen nicht und

MediaPlayer mediaPlayer = MediaPlayer.create(ToBeOrNot.this, R.raw.achord);
public void react(View view) {
            mediaPlayer.start(); 
}
protected void onStop(){
    mediaPlayer.release();
    mediaPlayer = null;
}

Bewirkt das erzwungene Schließen.

Aktualisieren: Hier ist die ganze Java-Klasse.

public class ToBeOrNot extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_to_be_or_not);

        }
MediaPlayer mediaPlayer;

public void react(View view) {
        mediaPlayer = MediaPlayer.create(ToBeOrNot.this, R.raw.achord);
        mediaPlayer.start(); 
}
protected void onStop(){
    mediaPlayer.release();
    mediaPlayer = null;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    //getMenuInflater().inflate(R.menu.activity_to_be_or_not, menu);
    // Locate MenuItem with ShareActionProvider
   return true;
}

}

Ich denke, was es tut, ist relativ selbsterklärend. Wenn es aufgerufen wird, werden Text und eine Schaltfläche angezeigt, die beim Antippen eine Aufnahme startet. Wenn jemand die Zurück-Taste drückt, sollte er zur vorherigen Aktivität zurückkehren und die Aufnahme stoppen. Danke für die Hilfe!

Antworten auf die Frage(2)

Ihre Antwort auf die Frage