如何在執行方法時暫停。在執行Java中的方法時暫停x秒
private void myMethod() {
// some lines of code
this.player.activateEffect(true);
// pause for 5 seconds
this.player.activateEffect(false);
}
我希望該方法將激活5秒的方法稱爲activeEfect。
如何在執行方法時暫停。在執行Java中的方法時暫停x秒
private void myMethod() {
// some lines of code
this.player.activateEffect(true);
// pause for 5 seconds
this.player.activateEffect(false);
}
我希望該方法將激活5秒的方法稱爲activeEfect。
最好的辦法是進行在myMethod的你的行動()然後調用其他方法,大概一個Runnable 5秒後。
private void myMethod() {
// some lines of code
this.player.activateEffect(true);
// run afterDelay in 5 seconds
postDelayed(afterDelay, 5000);
}
private Runnable afterDelay = new Runnable() {
@Override
public void run() {
player.activateEffect(false);
}
};
此代碼來自我自己的Android Java經驗,但我認爲這種技術是可移植的。
不,我認爲這個例子僅適用於Android,因爲它看起來是Android特定處理程序類的一部分。 –
在狀態改變方法中等待的整個想法是有缺陷的。等待延遲整個線程,阻止任何工作完成。
如果碰巧是UI控制線程,應用程序會凍結。
你真正想要做的是給「效果」一個超時值,並且每個(遊戲)「打勾」檢查超時是否已經過期,並在過期時將其刪除。
如果這是一個線性控制檯程序或線程不是問題,'Thread.sleep' * *可以工作。但是,如果此代碼是事件驅動GUI的一部分,如Swing或JavaFX程序,那麼可以很容易地凍結整個程序,通過使用Thread.sleep來使其無響應,而不必關心其調用哪個線程。您可能想要提供有關程序結構的更多信息。 –
檢查了這個http://stackoverflow.com/a/24104427/6689101 – zombie