0
好了,我這裏有一個相當奇怪的問題: 我有一個方法調用的延遲方法的順序,例如:如何鏈接計時器?
btn1.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
flash(true, 3000);
flash(false, 1200);
}
});
和Flash功能雲:
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;
}
...
任何幫助表示讚賞,謝謝。
謝謝,這似乎是最後一招:我擔心的是,堆垛例如,隊列中的一百個定時器將不起作用,因爲添加到隊列本身需要一些時間 - 它可能會延遲定時器,例如50ms等低值。 – Sincress 2014-09-04 08:09:51
@Sincress一些偏移量會發生,但在具有不同增加時間間隔的循環中調用'flash()'不應該產生明顯的延遲。 – Luksprog 2014-09-04 08:59:38
其實這工作得很好,非常感謝你先生! – Sincress 2014-09-04 09:04:35