buttons[inew][jnew].setBackgroundColor(Color.BLACK); //I want to insert a delay here buttons[inew][jnew].setBackgroundColor(Color.WHITE); break; } } }
break;
} }
Я хочу установить задержку между командой и изменением фона. Я пробовал использовать таймер потока и пробовал использовать run и catch. Но это не работает. Я пробовал это
import android.os.Handler; ... finalHandlerhandler=newHandler(); handler.postDelayed(newRunnable() { @Override publicvoidrun() { // Do something after 5s = 5000ms buttons[inew][jnew].setBackgroundColor(Color.BLACK); } }, 5000);
Ответ 2
Вы можете использовать CountDownTimer который намного эффективнее любого другого опубликованного решения. Вы также можете создавать регулярные уведомления об интервалах на этом пути, используя его onTick(long) метод
Взгляните на этот пример, показывающий обратный отсчет в 30 секунд
newCountDownTimer(30000, 1000) { publicvoidonFinish() { // When timer is finished // Execute your code here }
publicvoidonTick(long millisUntilFinished) { // millisUntilFinished The amount of time until finished. } }.start();
Ответ 3
Если вы часто используете задержку в своем приложении, используйте этот служебный класс
import android.os.Handler;
publicclassUtils {
// Delay mechanism
publicinterfaceDelayCallback{ voidafterDelay(); }
publicstaticvoiddelay(int secs, final DelayCallback delayCallback){ Handlerhandler=newHandler(); handler.postDelayed(newRunnable() { @Override publicvoidrun() { delayCallback.afterDelay(); } }, secs * 1000); // afterDelay will be executed after (secs*1000) milliseconds. } }
Использование:
// Call this method directly from java file
intsecs=2; // Delay in seconds
Utils.delay(secs, newUtils.DelayCallback() { @Override publicvoidafterDelay() { // Do something after delay