Я пытаюсь .release () mp3-ресурс MediaPlayer и остановить воспроизведение, которое воспроизводилось в отдельном классе Media_Player.java - при запуске методом onStop () из класса ThirdScreen.java.
Я попытался создать открытый метод, расположенный в Media_Player.java с именем StopPlaying, и вызвать его из метода ThirdScreen.java onStop (). Даже если музыка постоянно играет в фоновом режиме, когда приложение закрыто, метод .release () не работает.
Я также пытался изменить StopPlaying на private и вызывать его из отдельной общедоступной функции из ThirdScreen.java
Также я пытался установить для логической переменной значение true каждый раз, когда музыка воспроизводится в Play (). Когда метод onStop () запускается, он проверяет логическое состояние и запускает mp.stop () и mp.release (), что приводит к пропуску этого метода из-за того, что логическое значение равно false, несмотря на то, что ему присвоено значение true в Play ( )
Media_Player.java
private void Play() {
StopPlaying();
mp = MediaPlayer.create(context1, file1);
mp.start();
mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
StopPlaying();
}
});
}
Media_Player.java
public void StopPlaying() {
if (mp != null) {
mp.stop();
mp.release();
mp = null;
}
}
ThirdScreen.java
@Override
protected void onStop() {
super.onStop();
Log.i("TAG","onstop");
Media_Player media_player = new Media_Player(this, 0);
media_player.StopPlaying();
}
Я ожидаю, что музыкальный файл будет выпущен из памяти и остановлен для воспроизведения. При отладке при вызове StopPlaying () из ThirdScreen.java mp уже присваивается значение null. Таким образом .stop и .release не выполняется.
Все это с mp3, играющим в фоновом режиме.
Возможно, это может быть вызвано переменной области?
Любые ссылки, советы или подсказки приветствуются больше, чем рабочий код.