调用stop()和release()后,声音不会停止

时间:2012-04-22 14:52:24

标签: android audio media-player release

我有一项活动可以在分数屏幕中循环播放一首简单的歌曲,具体取决于玩家在我的游戏中是赢还是输。但是,退出我的乐谱活动后,声音将继续循环,直到垃圾收集发生。以下是我的代码的片段。我目前强制垃圾收集停止声音!为什么不停止()或释放()工作?

public void onPause(){
    super.onPause();
    _sounds.release();
}

public void load(){
    _victory = MediaPlayer.create(mActivity, R.raw.victory);
    _victory.setLooping(true);

    _failure = MediaPlayer.create(mActivity, R.raw.flutedeath);
    _failure.setLooping(true);
}

public void release(){
    _victory.stop();
    _victory.release();
    _victory = null;

    _failure.stop();
    _failure.release();
    _failure = null;
    System.gc();
}

1 个答案:

答案 0 :(得分:0)

您是否尝试使用类似这样的OnCompletionListener:

      try {
            mp = MediaPlayer.create(this, fileId);
            mp.start();

            mp.setOnCompletionListener(new OnCompletionListener() {

                public void onCompletion(MediaPlayer mp) {
                    mp.release();
                    mp = null;

                }
            });
        } catch (Exception exception) {
        }