1

我有一个活动,可以在得分屏幕上循环播放一首简单的歌曲,具体取决于玩家在我的游戏中是赢还是输。但是,在退出我的 Score Activity 后,声音会继续循环,直到发生垃圾回收。以下是我的代码片段。我目前强制垃圾收集停止声音!为什么 stop() 或 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();
}
4

1 回答 1

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) {
        }
于 2012-04-22T17:24:04.323 回答