2012年1月16日月曜日

CountDownTimer について

一時的に処理を停止させたい時、Java ならSleep を使えばいいが、Android でそれをやると全体の処理が止まってしまい、フリーズしたようになってしまう。

また、「処理⇒Sleep(1000)⇒処理⇒Sleep(1000)⇒処理⇒Sleep(1000)」としても、合計Sleep(3000)待ってから、まとめて処理が実行された。

画像処理が入っているのがダメなのか。。
なんとか方法を探したところ、Android では、CountDownTimer を使う以外にない(※)とのことだった。
※スレッドを使う場合は別。

いまさらスレッドは勘弁なので、CountDownTimer を使ってみるが、これ仕組みをよく理解してないとトラブルの元になりそうだと感じた。

まず、CountDownTimer クラスはObject クラスを継承しているだけなのだが、まるでThread クラスのように別の処理として実行されるようだ。
つまり、CountDownTimer の処理を記載した後に書かれた処理が、CountDownTimer に記載した処理とは別に実行されていく。

CountDownTimer は、あくまで独立したカウントダウンタイマーとして機能するだけであって、別にその間Sleep してくれるわけではないということ。

きちんと処理の流れを考えておかないと、おかしな挙動になりそうだ。


現在いろいろと試しているので、また新たな情報あれば追記します。


※追記)
VIEWを作った処理がUIスレッドとなり、ここでスリープすると全体の処理が止まってしまう。

0 件のコメント: