我正在尝试释放MediaPlayer mp3资源并停止在单独的Media_Player.java类中播放的播放-当由ThirdScreen.java类的onStop()方法触发时。
我试图在Media_Player.java中创建一个名为StopPlaying的公共方法,并从ThirdScreen.java onStop()方法调用它。即使关闭应用程序时音乐在后台不断播放,.release()方法也不起作用。
我还尝试将StopPlaying更改为private,并从ThirdScreen.java的单独的公共函数中调用它。
此外,每次尝试在Play()中播放音乐时,我都尝试将布尔变量设置为true。触发onStop()方法时,它将检查布尔状态并运行mp.stop()和mp.release(),由于布尔值为false,尽管在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();
}
我希望音乐文件从内存中释放出来,并停止播放。从ThirdScreen.java调用StopPlaying()进行调试时,mp已分配为null。因此,不会执行.stop和.release。 所有这些都会在后台播放mp3。 也许这可能是由可变范围引起的? 任何链接,技巧或提示都比有效的代码更受赞赏。