run - Cómo retrasar la ejecución de Android
runnable android example (2)
Estoy construyendo un juego de mesa para Android que cuenta con AI. La IA obtiene un turno y tiene que invocar una serie de acciones, luego de lo cual las publicaciones invalidan mi vista personalizada para actualizar.
Necesito reducir la velocidad de estas acciones para que el usuario vea que la IA tiene su turno en lugar de parpadear.
He intentado algo en este sentido
try {
doFirstThing();
Thread.sleep(500)
//post invalidate
doNextThing();
Thread.sleep(1000)
//post invalidate
}
catch (Exception e) {
}
Sin embargo, esto no tiene ningún efecto. También esto se está ejecutando en un hilo separado si esto no era obvio.
¿Cuál es mi mejor opción? He visto el controlador, pero no es necesario, ya que debo ejecutar una serie de tareas en secuencia, actualizando la vista cada vez.
Solo para agregar una muestra: el siguiente código puede ejecutarse fuera del hilo de la interfaz de usuario. Definitivamente, Handler debe usarse para retrasar tareas en Android
Handler handler = new Handler(Looper.getMainLooper());
final Runnable r = new Runnable() {
public void run() {
//do your stuff here after DELAY milliseconds
}
};
handler.postDelayed(r, DELAY);
Usar un controlador, que es una buena idea si está ejecutando desde un subproceso de interfaz de usuario ...
final Handler h = new Handler();
final Runnable r2 = new Runnable() {
@Override
public void run() {
// do second thing
}
};
Runnable r1 = new Runnable() {
@Override
public void run() {
// do first thing
h.postDelayed(r2, 10000); // 10 second delay
}
};
h.postDelayed(r1, 5000); // 5 second delay