consideri questa classe, AnimationThread
:Perché run() viene chiamato solo una volta?
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) {
}
}
}
Ora sto iniziando questa discussione in onCreate
di un'attività (solo mostrando il codice di massima):
AnimationThread animRunnable = new AnimationThread();
animationThread = new Thread(animRunnable);
animationThread.start();
Ma run()
sta ottenendo chiamato solo una volta (ho tracciato un registro per confermarlo). Voglio solo sapere che quando ho iniziato il thread perché run()
non viene chiamato ripetutamente con 500 sleep. Si chiama solo una volta.
Grazie. Ho la logica Mi sto assicurando che il mio codice logico venga eseguito ripetutamente. In realtà nella mia situazione voglio eseguire() per eseguire infinitamente per il mio scopo in modo da aver racchiuso la mia logica all'interno mentre (vero) all'interno di esecuzione e l'animazione si verifica in base allo stato della variabile di stato doAnimation. Grazie. –
Questo è uno schema comune. Tuttavia, probabilmente si vorrà terminare il thread alla fine per arrestare il programma. Oppure potresti usare un thread daemon per quello. – Thilo