我想使用延迟在我的项目中设置一个booleanVariable。
所以基本上我有一个布尔变量,当用户触摸按钮时,该变量设置为true。两秒钟后,该布尔变量应设置回false。
所以我的问题是如何引入2秒的延迟?
我有以下代码不起作用-
boolean userTouch;
public void buttonTouched(){//This gets called when user touches the button
setUserTouch(true);
try{
Thread.sleep(2000);
}catch(Exception e){
e.printStackTrace;
}
setUserTouch(false);
}
在另一个方法中,我调用
getUserTouch()
方法来查看用户是否在过去2秒钟内触摸了按钮。但是该方法始终设置为false。从来都不是真的我的代码有问题吗?
setUserTouch(true);
方法应该在try块中吗?还有其他方法可以实现我的目标吗?即我可以引入2秒延迟的任何其他方法。我正在尝试倒数计时器。但是我不知道其他方法。
最佳答案
如何使用异步任务管理器。您可以在AsyncTask的doInBackGround方法中使用thread.sleep命令,然后使用publishProgress方法将userTouched
布尔变量设置回false。
也尝试下面的代码。
setUserTouched(true);
long DELAY = 2000;
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
// code in here will get executed after DELAY variable
setUserTouched(false);
}
}, DELAY);