我有以下方法我使用運行連續螺紋:爲什麼線程被多次創建?
public void createAndStartCountDownThread(){
final Handler handler = new Handler();
countDownThread=new Thread(new Runnable() {
public void run() {
int timeToBlink = 1000;
try{Thread.sleep(timeToBlink);}catch (Exception e) {}
handler.post(new Runnable() {
public void run() {
if(isCountDownThreadRunning==0)
return;
if(secondsUntilFinished!=0)
secondsUntilFinished--;
if(secondsUntilFinished==0)
onFinish();
else{
createAndStartCountDownThread();
}
}
});
}
});
countDownThread.start();
}
基本上這一切確實是倒數計時器。但問題是,如果我經常調用這個方法,看起來這個線程的多個拷貝被創建,因爲定時器開始移動兩倍或三倍的速度。我不明白爲什麼會發生這種情況 - 似乎我正在重新分配現有的countDownThread,因此不應生成新的countDownThread。我究竟做錯了什麼?
檢查你的條件,你secondsUntilFinished和isCountdownThreadRunning成員。在某些時候,這些條件可能會被評估爲錯誤或真實,這就是爲什麼其他語句會一遍又一遍地被踢掉的原因。 –
那麼你每次調用方法時都要實例化它。使其靜態。 – SceLus