在Java中执行方法时暂停执行x秒

时间:2016-11-28 17:18:23

标签: java methods pause

如何在执行方法时暂停我的应用程序?

考虑以下示例:

private void myMethod() {
   // some lines of code
   this.player.activateEffect(true);
   // pause for 5 seconds
   this.player.activateEffect(false);
}

我希望使用暂停将activeEffect方法 BE 激活5秒钟。

3 个答案:

答案 0 :(得分:2)

以下是sleep的代码:

try {
  Thread.sleep(5000L);
} catch(InterruptedException ie) {
   // Exception handling code here, it is a bad practice to leave this scope empty
}

答案 1 :(得分:1)

最好的办法是在myMethod()中执行操作,然后在5秒后调用另一个方法,可能是Runnable。

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的经验,但我认为这种技术是可移植的。

答案 2 :(得分:1)

在状态改变方法中等待的整个想法是有缺陷的。等待延迟整个线程,阻止任何工作完成。

如果恰好是UI控制线程,应用程序会冻结。

你真正想做的是给出"效果"超时值,每个(游戏)"勾选"检查超时是否已过期,并在超时时将其删除。