Cómo establecer el retraso en 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; } } 

Quiero establecer un retraso entre el comando entre el cambio de fondo. Intenté usar un contador de tiempo de la rosca e intentado usar la corrida y la cogida. Pero no está funcionando. Lo intenté

  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); 

Pero sólo se cambia a negro.

5 Solutions collect form web for “Cómo establecer el retraso en Android?”

Pruebe este código:

 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); 

Puede utilizar CountDownTimer que es mucho más eficiente que cualquier otra solución publicada. También puede producir notificaciones regulares en intervalos a lo largo del camino usando su onTick(long)

Echa un vistazo a este ejemplo que muestra una cuenta atrás de 30 segundos

  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(); 

Uso del Thread.sleep(millis ).

Si utiliza retardo con frecuencia en su aplicación, utilice esta clase de utilidad

 import android.os.Handler; /** * Author : Rajanikant * Date : 16 Jan 2016 * Time : 13:08 */ 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. } } 

Uso:

 // 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 } }); 

Si quieres hacer algo en la interfaz de usuario en intervalos de tiempo regulares, la opción muy buena es usar CountDownTimer:

 new CountDownTimer(30000, 1000) { public void onTick(long millisUntilFinished) { mTextField.setText("seconds remaining: " + millisUntilFinished / 1000); } public void onFinish() { mTextField.setText("done!"); } }.start(); 
  • Modo de lanzamiento "single top" de Android y método onNewIntent
  • Android Socket Programación?
  • Cómo formatear la fecha actual con Sufijo a Superscript?
  • Actividad de Android que las funciones anuladas deben llamar super. *
  • Vista previa de Android Studio: Esta JVM no admite etiqueta constante 15
  • Diferencia entre DeadObjectException y causar una excepción NullPointerException
  • métodos en foreach y para bucles en java
  • Compruebe si una cadena es un número
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.