Ada*_*gyi 0 multithreading android wait
我怎样才能做到这一点 ?我尝试了一些线程但没有发生任何事情.
myView.setOnTouchListener(new OnTouchListener()
{
public boolean onTouch(View arg0, MotionEvent arg1)
{
myButton.setClickable(false);
//Here i want to wait 1 second then:
myButton.setClickable(true);
return false;
}
});
Run Code Online (Sandbox Code Playgroud)
请问有人在我的代码中等待一秒钟吗?
如果你在那里等,你将阻止UI线程.您的用户会因此而讨厌您.如果您详细描述了您想要实现的目标,我们可以帮助您找到更好的解决方案.
更好的解决方案是使用postDelayed方法
myView.setOnTouchListener(new OnTouchListener()
{
public boolean onTouch(View arg0, MotionEvent arg1)
{
myButton.setClickable(false);
//wait 1 second
myButton.postDelayed(new Runnable() {
@Override
public void run() {
myButton.setClickable(true);
}
}, 1000);
return false;
}
});
Run Code Online (Sandbox Code Playgroud)
你绝对不需要通过调用Thread.sleep(1000)来阻止UI线程,所以你需要通过在UI线程上1秒后运行所需操作的Handler来实现它:
//initialize it in your activity so that the handler is bound to UI thread
Handler handlerUI = new Handler();
myView.setOnTouchListener(new OnTouchListener()
{
public boolean onTouch(View arg0, MotionEvent arg1)
{
myButton.setClickable(false);
//Here i want to wait 1 second then:
handlerUI.postDelayed(new Runnable() {
@Override
public void run() {
myButton.setClickable(true);
}
}, 1000);
return false;
}
});
Run Code Online (Sandbox Code Playgroud)