好的,我在这里有一个相当奇怪的问题: 我有一种方法调用一系列延迟方法,例如:
btn1.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
flash(true, 3000);
flash(false, 1200);
}
});
闪光灯功能如下:
private void flash(final boolean color, int duration) {
// SLEEP duration MILLISECONDS HERE ...
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
changeColour(color);
}
}, duration);
}
1200毫秒定时器在3000毫秒定时器之前启动会发生什么,尽管3秒定时器应先行。我尝试为计时器添加一个触发器,但这只会冻结整个应用程序:
...
public void onClick(View view) {
flash(true, 3000);
while(wait); //stop here until the timer triggers wait to false
wait = false;
flash(false, 1200);
}
...
public void run() {
changeColour(color);
wait=false;
}
...
感谢任何帮助,谢谢。
答案 0 :(得分:0)
1200毫秒定时器在3000毫秒之前启动会发生什么 计时器虽然3秒钟应该先行。
只有在两者上设置确切的时间间隔时,才应先触发第一个。但是,现在你只需触发两次闪光,一次在3秒后运行,一次在1.5秒后运行(从当前时间)。
为了做你想做的事,你需要在发布第二条消息时考虑第一次触发的时间:
flash(true, 3000); // post a message after 3 seconds
flash(false, 4200); // post a message after 4,2 seconds(so at 1,2 seconds after the first flash runs)