Как приостановить / спать поток или процесс в Android? - PullRequest
274 голосов
/ 05 октября 2009

Я хочу сделать паузу между двумя строками кода, позвольте мне объяснить немного:

-> пользователь нажимает кнопку (фактически карту), и я показываю ее, изменяя фон этой кнопки:

thisbutton.setBackgroundResource(R.drawable.icon);

-> после, скажем, 1 секунды, мне нужно вернуться к предыдущему состоянию кнопки, изменив ее фон:

thisbutton.setBackgroundResource(R.drawable.defaultcard);

-> Я пытался приостановить поток между этими двумя строками кода с помощью:

try {
    Thread.sleep(1000);
} catch (InterruptedException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

Однако это не работает. Может быть, мне нужно приостановить процесс, а не поток?

Я тоже пробовал (но это не работает):

new Reminder(5);

С этим:

public class Reminder {

Timer timer;

        public Reminder(int seconds) {
            timer = new Timer();
            timer.schedule(new RemindTask(), seconds*1000);
        }

        class RemindTask extends TimerTask {
            public void run() {
                System.out.format("Time's up!%n");
                timer.cancel(); //Terminate the timer thread
            }
        }  
    }

Как я могу приостановить / перевести нить или процесс?

Ответы [ 11 ]

0 голосов
/ 05 декабря 2018

Если вы используете Kotlin и сопрограммы , вы можете просто сделать

GlobalScope.launch {
   delay(3000) // In ms
   //Code after sleep
}

А если вам нужно обновить пользовательский интерфейс

GlobalScope.launch {
  delay(3000)
  GlobalScope.launch(Dispatchers.Main) {
    //Action on UI thread
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...