2014-01-19 38 views
0

週期性任務這是我的代碼:可變週期

private Timer mTimer = new Timer(); 

mTimer.scheduleAtFixedRate(mTask, 0, mSpeed); 

有一次,我給那scheduleAtFixedRate()和改變我的MSPEED期間不會改變,但保持不變。由於該方法明確表示「FixedRate」,這看起來很正常。

但現在我的問題:是否有像mTimer.scheduleAtVariableRate?

我對我的俄羅斯方塊使用這個計時器,速度在一定的分數上增加。

我試圖取消mTimer和調用同一方法,但不工作:(

+1

是你在這裏做什麼。你能告訴我們你的嘗試沒有用嗎? – Keppil

+0

@Keppil Sure:mTimer.cancel(); mTimer =新的Timer(); mTimer.scheduleAtFixedRate(mTask,0,mSpeed); – Alexander

回答

0

我固定通過重新創建的TimerTask以及(又一次創造定時器)問題:我想取消它,並安排新的任務

mTimer.cancel(); 
mTimer = new Timer(); 
mTimer.scheduleAtFixedRate(new TimerTask() { ... }, 0, mSpeed); 
0

我相信你必須避免使用「scheduleAtFixedRate」,而是簡單地安排定時器觸發一次,第一次後期。 在您mTasks,在年底,那麼簡單的設置本身MSPEED後再次再次觸發。

到MSPEED任何更改現在應該在代碼運行之間的變化區間中得到體現。 這是因爲調度程序不會知道mSpeed本身的變化,需要用新值再次調用。