安卓媒体播放器减缓了代码流



我正在尝试为游戏创建音效。但当音效开始播放时,使用MediaPlayer会让游戏慢一秒钟。如果我用了很多音效,游戏真的很难玩。我想我的意识有问题。

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

使用短mp3文件

尝试清理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

希望得到帮助!

最好将媒体播放器声明为字段,并在onCreate()中而不是在onDraw()中只创建一次。现在,每次调用onDraw()(通常是很多)时,您都会创建一个新的媒体播放器,这会占用资源。如果不需要的话,也可以使用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();
 }

最新更新