Considere esta clase, AnimationThread
:¿Por qué se ejecuta run() solo una vez?
class AnimationThread implements Runnable {
public void pause() {
doAnimation = false;
}
public void doStart(){
doAnimation = true;
}
@Override
public void run() {
// TODO Auto-generated method stub
if (doAnimation) {
//my code
}
try {
Thread.sleep(500);
}
catch (InterruptedException e) {
}
}
}
Ahora estoy empezando este hilo en onCreate
de una actividad (sólo mostrar código en bruto):
AnimationThread animRunnable = new AnimationThread();
animationThread = new Thread(animRunnable);
animationThread.start();
Pero run()
está siendo llamado una sola vez (Rastreé un registro para confirmar eso). Solo quiero saber que cuando comencé el hilo, por qué run()
no recibe llamadas repetidas veces con 500 sleep. Simplemente se llama una vez.
Gracias. Tengo la lógica. Me estoy asegurando de que dentro de mi código lógico se ejecute repetidamente. En realidad, en mi situación, quiero que run() ejecute infinitamente para mi propósito, así que he incluido mi lógica dentro de while (true) dentro de la ejecución y la animación se basa en el estado de la variable de estado doAnimation. Gracias. –
Ese es un patrón común. Sin embargo, es probable que desee que el hilo termine eventualmente para apagar el programa. O podrías usar un hilo daemon para eso. – Thilo