1
我正在寫一個俄羅斯方塊克隆。我想使碎片落在一點點每60秒後速度更快,爲此我使用的是ScheduledExecutorService:暫停和恢復ScheduledExecutorService
executor.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
levelUp();
}
}, 60, 60, TimeUnit.SECONDS);
現在,我可以暫停遊戲,並同時暫停遊戲顯然停止做任何事情,直到我恢復它。就像現在一樣,暫停這場比賽是很好的,除了這位執行者負責「升級」之外,所有的都是這樣。例如,如果我玩了50秒,暫停遊戲一分鐘,恢復並再玩10秒,我會在2級,而我應該在1級(我們從0級開始)。有沒有辦法暫停和恢復執行人?
請注意,暫停時暫時不升級是不夠的:如果我玩50秒,然後暫停20秒然後恢復,那麼在升級之前我必須再玩50秒,而不是假設的10秒。
那麼,有沒有辦法暫停和恢復ScheduledExecutorService
?
這兩個問題都沒有回答我的問題,但如果無法完成,我想我將不得不使用計劃。 –
'ScheduledExecutorService'這種方式不太靈活,所以我會以不同的方式執行自己的調度,但仍然使用'ScheduledExecutorService'來運行一次性計劃任務。始終持有對下一個要執行的任務的引用,並且在出現暫停情況時,我會取消下一個'levelUp'任務的運行並保存剩餘時間直到執行。取消暫停時間只是安排一個新的'levelUp'任務與剩餘的時間。 – marczeeee
是啊,已經做到了:) –