我想使用延迟在我的项目中设置一个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);

07-24 22:23