我想通过使用停止按钮来打破线程计时器内部的循环。但是 Ecclips 在 stopsound() 上显示错误“令牌上的语法错误,错误的构造”;线程计时器中的方法。
我知道我们不能在 for 循环中定义函数,这就是为什么会出现错误。但我只是想知道,我们如何使用停止按钮打破线程计时器内部的循环?
stop = (ImageButton) findViewById(R.id.imageButton3);
stop.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
stopsound();
}
});
public void mpsleep() {
mp.start();
Thread timer= new Thread(){//create new thread with anonymous class
public void run(){
try{
for (i= 0;i< maxCount;i++){
sleep(5000);//5 pause
public void stopsound(){
break;
}
}
}catch(Exception e){
e.printStackTrace();//print the stack trace if have an error
}finally{
runOnUiThread(new Runnable() {
@Override
public void run() {
mp.pause();
mp.seekTo(0);
loop=0;
bv.setImageResource(R.drawable.playzz);
}
});
}
}
};
timer.start();
}
找到了其他方法来打破它,但它只在按下停止按钮 5 秒后才会打破。
int loop=0;
stop.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
loop=1
}
});
public void mpsleep() {
Thread timer= new Thread(){
public void run(){
try{
for (i= 0;i< maxCount;i++){
sleep(5000);//5 pause
if (loop==1){
break;
}
}
}finally{
runOnUiThread(new Runnable() {
public void run() {
mp.pause();
mp.seekTo(0);
loop=0;
bv.setImageResource(R.drawable.play);
}
});
}}
单击停止按钮后,我们如何立即打破 for 循环?