我正在尝试在此代码中循环声音。在主要尝试和捕获的finally块中,我这样做:
if (loop) {
auline.flush();
run();
} else {
ended=true;
auline.drain();
auline.close();
}
但它会导致堆栈溢出。如何在不创建新实例的情况下安全地循环此声音?
答案 0 :(得分:3)
您正在run
内拨打run
,这最终会填满调用堆栈&导致堆栈溢出异常
现在,问题是,你如何克服它?
您需要在run方法中循环。我能想到的最好方法是在run方法中使用“exit”触发器
public void run() {
while(loop) {
//...play sound
}
}
您可以使用stop
方法同时触发loop
标记