java模拟单击按钮时的延迟
我有一个按钮,当这个按钮被点击时,我想做一些动作,然后把它们还原回来,比如说5秒钟。例如,单击按钮A时,文本A。文本被“点击”5秒,5秒后文本值应恢复到原始值。这就是我所拥有的,但我觉得这是完全错误的方式。不延迟的代码:
diff=time2-time1;
while (diff<5000) {
//Log.d("Timer is", String.valueOf(diff));
time2=System.currentTimeMillis();
diff=time2-time1;
}
所以直到循环工作它的模拟延迟,然后我做我想要的。有什么建议吗
# 1 楼答案
使用Handler,类似这样:
编辑:请注意,此解决方案允许主线程在延迟期间继续运行——刷新GUI、正确处理活动更改(如“主页”按钮)等。使用
Thread.sleep()
则不会# 2 楼答案
您可能希望将AsyncTasks作为一个容器来完成您的工作。此外,还可以调用线程。睡在里面。作业完成后,可以要求处理程序对象更改标题
在AsyncTask中执行此操作而不只是休眠主线程的原因是应用程序不会“冻结”。以下是您可以如何使用它:
# 3 楼答案
试试这个代码
以上所有代码都进入
public void onClick(View v)
方法# 4 楼答案
忙循环是个坏主意——它会把你的电池活活吃掉。也许^{} 会更好
# 5 楼答案
你可以在Onclick上查看并使用
也可以使用bollean IsClickalBe停止新单击,直到无法执行为止
# 6 楼答案
你有办法做到这一点:
它可能抛出一个中断异常,因此您必须捕获它