我正在为Android编写一个测验程序(用Java编写)。当用户回答问题时(通过点击按钮),我想在屏幕上闪烁一条消息,说明它们是否正确,然后暂停5秒,然后再转到下一个问题。
但是,单击答案按钮时,程序会暂停,但不会显示正确/不正确的消息。只有睡眠方法完成后才会显示该消息。
if (correct)
Answer.setText("CORRECT!");
else
Answer.setText("WRONG!");
try { Thread.sleep(5000); }
catch(InterruptedException e) {}
作为奖励,我希望在暂停期间禁用答案按钮。
答案 0 :(得分:4)
你需要一个AsyncTask。 Google会为您介绍here。
当您在主Activity上使用Thread.sleep()时,您将使应用程序进入休眠状态。 AsyncTask将允许您暂停5秒,可能会显示一个In Progress栏,然后从那里拿起,而不会冻结屏幕。
答案 1 :(得分:3)
Imo AsyncTask
对于这个用例来说太过分了。
不要使用睡眠。 而是设置正确/不正确的消息,而不是这样做:
new Handler().postDelayed(new Runnable(){
public void run()
{
goToNextScreen();
}
}
, 5000);
答案 2 :(得分:1)
使用Handler:您可以发送延迟5000毫秒的消息,禁用按钮,当消息到达时,您可以重新启用按钮。有关详细信息,请参阅http://www.tutorialforandroid.com/2009/01/using-handler-in-android.html。
答案 3 :(得分:-1)
你应该考虑使用计时器。我不认为使用线程是明智的。使用计时器进入下一个问题就行了。
希望这有帮助。
免责声明:我只使用Java中的计时器做类似的事情,但我确信它可以在Android中运行。