Как установить задержку в Android?

public void onClick(View v) { // TODO Auto-generated method stub switch(v.getId()){ case R.id.rollDice: Random ranNum = new Random(); int number = ranNum.nextInt(6) + 1; diceNum.setText(""+number); sum = sum + number; for(i=0;i<8;i++){ for(j=0;j<8;j++){ int value =(Integer)buttons[i][j].getTag(); if(value==sum){ inew=i; jnew=j; buttons[inew][jnew].setBackgroundColor(Color.BLACK); //I want to insert a delay here buttons[inew][jnew].setBackgroundColor(Color.WHITE); break; } } } break; } } 

Я хочу установить задержку между командой между сменой фона. Я попытался использовать таймер streamа и попытался использовать run и catch. Но он не работает. Я попробовал это

  Thread timer = new Thread() { public void run(){ try { buttons[inew][jnew].setBackgroundColor(Color.BLACK); sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); } } }; timer.start(); buttons[inew][jnew].setBackgroundColor(Color.WHITE); 

Но он только меняется на черный.

6 Solutions collect form web for “Как установить задержку в Android?”

Попробуйте этот код:

 final Handler handler = new Handler(); handler.postDelayed(new Runnable() { @Override public void run() { // Do something after 5s = 5000ms buttons[inew][jnew].setBackgroundColor(Color.BLACK); } }, 5000); 

Вы можете использовать CountDownTimer который намного эффективнее любого другого опубликованного решения. Вы также можете производить регулярные уведомления по интервалам по пути, используя onTick(long)

Посмотрите на этот пример, показывающий обратный отсчет 30 секунд

  new CountDownTimer(30000, 1000) { public void onFinish() { // When timer is finished // Execute your code here } public void onTick(long millisUntilFinished) { // millisUntilFinished The amount of time until finished. } }.start(); 

Если вы часто используете задержку в своем приложении, используйте этот class утилиты

 import android.os.Handler; public class Utils { // Delay mechanism public interface DelayCallback{ void afterDelay(); } public static void delay(int secs, final DelayCallback delayCallback){ Handler handler = new Handler(); handler.postDelayed(new Runnable() { @Override public void run() { delayCallback.afterDelay(); } }, secs * 1000); // afterDelay will be executed after (secs*1000) milliseconds. } } 

Применение:

 // Call this method directly from java file int secs = 2; // Delay in seconds Utils.delay(secs, new Utils.DelayCallback() { @Override public void afterDelay() { // Do something after delay } }); 

Использование Thread.sleep(millis ).

Если вы хотите что-то сделать в пользовательском интерфейсе с регулярными интервалами времени, очень хороший вариант – использовать CountDownTimer:

 new CountDownTimer(30000, 1000) { public void onTick(long millisUntilFinished) { mTextField.setText("seconds remaining: " + millisUntilFinished / 1000); } public void onFinish() { mTextField.setText("done!"); } }.start(); 

вы можете использовать это:

 import java.util.Timer; 

и для самой задержки добавьте:

  new Timer().schedule( new TimerTask(){ @Override public void run(){ //if you need some code to run when the delay expires } }, delay); 

Переменная «delay» представляет миллисекунды, например, установить задержку до 5000 – для задержки 5 секунд

  • Импортирование двух classов с одинаковым именем. Как обращаться?
  • String valueOf против конкатенации с пустой строкой
  • завершение программы на выходе основного streamа?
  • Различия в виджетах для Android
  • Загрузка Android из URL в Bitmap
  • Обновить данные в fragmentе ViewPager
  • Продвижение на Java?
  • Как работает импорт Java?
  • Android-кнопка Onclick
  • Как проверить имя сертификата и псевдоним в файлах хранилища ключей?
  • Как сделать PDF в Android
  • Interesting Posts

    Java lib или приложение для преобразования CSV в XML-файл?

    Как обновить repository maven в Eclipse?

    Контроль отслеживания шрифтов TrueType в fontforge

    Автоматически ли индексирует столбцы внешнего ключа MySQL?

    psql: FATAL: Идентификационная идентификация не удалась для пользователя «postgres»

    Как я могу запускать веб-страницу в планировщике задач каждый день?

    Есть ли способ восстановить удаленные файлы, которые, возможно, были перезаписаны?

    Переход активности в Android

    Являются ли ссылки этих объектов на стек или на кучу?

    Как я могу указать явный заказ ScriptBundle?

    Географические границы штатов / провинций -> Google Maps Polygon

    Как преобразовать ArrayList, содержащий целые числа в примитивный массив int?

    Нет Microsoft Security Essentials для Windows 8. Итак, как получить доступ к аналогичным функциям и настройкам Defender?

    gcc не будет включать math.h

    Почему так сложно подключиться к кабельному модему и маршрутизатору?

    Давайте будем гением компьютера.