Приостановить выполнение в Java GUI - PullRequest
1 голос
/ 23 июня 2011

Я пишу программу викторины для Android (написана на Java).Когда пользователь отвечает на вопрос (нажав кнопку), я хочу высветить на экране сообщение о том, были ли они правильными или нет, с последующей 5-секундной паузой, прежде чем перейти к следующему вопросу.Однако при нажатии кнопки ответа программа приостанавливается, но не отображает сообщение о правильности / неправильности.Сообщение появляется только после завершения метода сна.

if (correct)   
    Answer.setText("CORRECT!"); 
else 
    Answer.setText("WRONG!"); 

try { Thread.sleep(5000); } 
catch(InterruptedException e) {}

В качестве бонуса, я бы хотел, чтобы кнопки ответа были отключены во время паузы.

Ответы [ 4 ]

4 голосов
/ 23 июня 2011

Для этого вам понадобится AsyncTask . Google дает вам введение здесь .

Когда вы выполняете Thread.sleep () в главном действии, вы переводите приложение в спящий режим. AsyncTask позволит вам сделать паузу на 5 секунд, возможно, отобразить небольшую полосу «В процессе», а затем продолжить отсюда, не останавливая экран.

3 голосов
/ 23 июня 2011

Imo AsyncTask слишком много для этого варианта использования.

Не спать. Вместо этого установите правильное / неправильное сообщение и затем сделайте следующее:

new Handler().postDelayed(new Runnable(){
  public void run()
  {
    goToNextScreen();
  }
}
, 5000);
1 голос
/ 23 июня 2011

Использовать обработчик : вы можете отправить сообщение с задержкой в ​​5000 миллисекунд, отключить кнопки и, когда сообщение прибудет, вы можете снова включить кнопки.См. http://www.tutorialforandroid.com/2009/01/using-handler-in-android.html для получения дополнительной информации.

0 голосов
/ 23 июня 2011

Вы должны изучить использование таймеров для этого.Я не думаю, что использование потоков имеет смысл для этого.Использование таймера для перехода к следующему вопросу будет работать.

Посмотрите на таймеры здесь

Надеюсь, это поможет.

Отказ от ответственности: Я только использовалтаймеры в Java, чтобы сделать что-то подобное, но я уверен, что это будет работать в Android.

...