如何在执行方法时暂停我的应用程序?
考虑以下示例:
private void myMethod() {
// some lines of code
this.player.activateEffect(true);
// pause for 5 seconds
this.player.activateEffect(false);
}
我希望使用暂停将activeEffect
方法 BE 激活5秒钟。
答案 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控制线程,应用程序会冻结。
你真正想做的是给出"效果"超时值,每个(游戏)"勾选"检查超时是否已过期,并在超时时将其删除。