1

ゲームでプレーヤーが勝ったか負けたかに応じて、スコア画面で単純な曲をループするアクティビティがあります。ただし、スコア アクティビティを終了した後、ガベージ コレクションが発生するまでサウンドがループし続けます。以下は私のコードのスニペットです。私は現在、ガベージコレクションを強制的に音を止めるようにしています! 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 に答える