我有一个应该对某些事件做出反应的过程。所以当playFromList()
被调用时,它会从 soundpool 播放一些声音。然后在一个线程中,我设置了一个标志,并且在 3.5 秒内它不应该播放任何声音。
我得到的是:它会播放声音,然后等待 3.5 秒。如果playFromList()
在 3.5 秒内被调用 5 次,它仍然会到达SoundManager.playSound(listNr)
,并且仍然在 17.5 秒内完成。这不正是我想要的。我想要SoundManager.playSound(listNr)
只调用一次的方法。
public class Settings{
public static boolean flag = false;
}
public class Main{
public void playFromList(int listNr,int g){
if(!Settings.flag){
SoundManager.playSound(listNr);
if(g ==0){
mpVolume((float) 0.3);
t5sec.run();
}else{pauseMus();}
}
}
private Handler vijfSeconden = new Handler(){
public void handleMessage(Message msg){
mpVolume((float)0.8);
}
};
Thread t5sec = new Thread(){
public void run(){
if(Settings.flag == false){
Settings.flag = true;
try {
Thread.sleep(3500);
} catch (InterruptedException e) {
Settings.flag = false;
e.printStackTrace();
}
vijfSeconden.sendEmptyMessage(0);
Settings.flag = false;
}
}
};
}