Android MediaPlayer减慢了代码流

时间:2015-02-20 09:54:14

标签: android android-mediaplayer

我正在尝试为游戏创建声音效果。 但是当声音效果开始播放时使用MediaPlayer - 游戏速度会慢一点。 如果我使用了很多声音效果 - 游戏真的很有效。 我想我的意识有问题。

protected void onDraw(Canvas canvas) {
     super.onDraw(canvas);
     // ...
     if(somethingHappened) {
             final MediaPlayer mySound = MediaPlayer.create(getContext(), R.raw.sound1);
            mySound.start();
            //...
     }
     //...
}

使用短mp3文件

2 个答案:

答案 0 :(得分:1)

尝试清理mySound:

public class MyService extends Service {
MediaPlayer mySound;
// ...

@Override
public void onDestroy() {
   if (mySound != null) mySound.release();
}
}

了解更多详情:http://developer.android.com/guide/topics/media/mediaplayer.html

希望这有帮助!

答案 1 :(得分:0)

最好将媒体播放器声明为字段,并在onCreate()中仅在onDraw()中创建一次。现在,每次调用onDraw()(通常很多)都会创建一个新的Media Player,从而占用资源。 另外好处是mySound.pause()如果它不需要,就像Mounir说mySound.release()当你想杀死它时。

 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
 ...
 final MediaPlayer mySound = MediaPlayer.create(getContext(),R.raw.sound1);
 ...

 }

protected void onDraw(Canvas canvas) {
     super.onDraw(canvas);

 if(somethingHappened) {
        mySound.start();
 // might also want to call mySound.stop() at some point too
 }

 protected void onPause(){
     super.onPause();
     mySound.pause();
 }

 protected void onDestroy(){
     super.onDestroy();
     mySound.release();
 }