我正在为Android编写一个测试程序(用Java编写)。当用户回答一个问题(点击按钮)时,我想在屏幕上弹出一条消息,说明他们是否正确,然后停顿5秒,然后继续下一个问题。
但是,当单击回答按钮时,程序会暂停,但不会显示正确/不正确的消息。只有在睡眠方法完成后,消息才会出现。
if (correct)
Answer.setText("CORRECT!");
else
Answer.setText("WRONG!");
try { Thread.sleep(5000); }
catch(InterruptedException e) {}
作为奖励,我希望在暂停期间禁用回答按钮。
您需要一个AsyncTask。谷歌在这里给你介绍一下。
当您在主活动上执行Thread.sleep()时,您正在使应用程序进入睡眠状态。AsyncTask将允许您暂停5秒钟,可能会显示一个小的"正在进行"栏,然后从那里开始,而不会冻结屏幕。
Imo AsyncTask
对于这个用例来说太多了。
不要利用睡眠。相反,设置正确/不正确的消息,然后这样做:
new Handler().postDelayed(new Runnable(){
public void run()
{
goToNextScreen();
}
}
, 5000);
使用处理程序:您可以发送延迟5000毫秒的消息,禁用按钮,当消息到达时,您可以重新启用按钮。看见https://web.archive.org/web/20200810154212/http://www.tutorialforandroid.com/2009/01/using-handler-in-android.html获取更多信息。
您应该研究如何使用计时器。我认为使用线程是不明智的。使用计时器进入下一个问题是可行的。
看看这里的计时器
希望这能有所帮助。
免责声明:我只在Java中使用过计时器来做类似的事情,但我相信它在Android中也能工作。