はAnimationThread
、このクラスを考えてみましょう:run()は一度呼び出されるのはなぜですか?
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) {
}
}
}
今私は(ちょうどラフなコードを示す)活動のonCreate
でこのスレッドを始めています:
AnimationThread animRunnable = new AnimationThread();
animationThread = new Thread(animRunnable);
animationThread.start();
しかしrun()
、私はトレースさだけ(一度呼ばなっていますそれを確認するためのログ)。私はスレッドを開始したときに、なぜrun()
が500スリープで繰り返し呼び出されていないのかを知りたいだけです。一度呼び出されるだけです。
ありがとう。私は論理を得た。内部でロジックコードが繰り返し実行されていることを確認しています。実際に私の状況では私はrun()が私の目的のためにinfinetlyを実行したいので、doNnimation状態変数の状態に基づいてアニメーションが実行されている間、while(true)ありがとう。 –
これは一般的なパターンです。しかし、おそらく、プログラムをシャットダウンするために、スレッドを最終的に終了させたいでしょう。または、デーモンスレッドを使用することもできます。 – Thilo