我有Runnable并且在播放一些音乐后有两个处理程序用于按钮背景颜色更改。 现在,如何在一个名为stop的按钮单击时停止使用runnable播放的音乐,持续延迟700毫秒。
handler=new Handler();
runnable = new Runnable() {
@Override
public void run() {
for (int i = 0; i<Uirkeys1.length; i++) {
final int value = i;
try {
Thread.sleep(700);
} catch (InterruptedException e) {
e.printStackTrace();
}
handler.post(new Runnable() {
@Override
public void run() {
copyView.get(cnt1).getBackground().setAlpha(100);
ModeSound(Integer.parseInt(CopyMultimap.get(copykey[cnt1]).get(3)));
}
});
try {
Thread.sleep(800);
} catch (InterruptedException e) {
e.printStackTrace();
}
handler.post(new Runnable() {
@Override
public void run()
copyView.get(cnt1).getBackground().setAlpha(500);
cnt1++;
}
});
}
}
};
new Thread(runnable).start();
cnt1=0;
}
});
}
答案 0 :(得分:1)
您可以创建一个实现Runnable的类MyRunnable,并在其中创建一个字段
private boolean stopped = false;
public void stop() { stopped = true; }
然后你应该检查你的执行循环
if(!stopped) {..do work..} else return .
您当然可以在MyRunnable对象上调用stop()方法。