【Kotlin/Android】Timerクラスの使い方!遅延処理や一定時間毎のループ実装

この記事からわかること
- Android Studio/KotlinのTimerクラスの使い方
- 遅延処理や一定時間ごとに処理を実行する方法
\ アプリをリリースしました /
環境
- Android Studio:Flamingo
- Kotlin:1.8.20
Timerクラス
AndroidのTimer
クラスはタイマーを使用してバックグラウンドでタスクを操作するための機能を提供するクラスです。指定したタスク(処理)を特定の秒数後に遅延させたり、一定の間隔で都度タスク(処理)を実行することができるようになります。
各TimerオブジェクトにはそのTimerに紐づくすべてのタスクを順番に実行するためのバックグラウンドスレッドを1つ用意します。Timerオブジェクトへの最後の参照がなくなり、すべてのタスクが実行を完了すると、Timerのタスク実行スレッドは終了し、ガベージコレクションの対象になります。
Timerのタスク実行スレッドをすぐに終了させたい場合は、cancel
メソッドを呼び出せばOKです。
scheduleメソッド
Timer
を使用するにはschedule
メソッドを使用します。引数に実行したい処理や遅延秒数などを渡します。
- TimerTask task:処理
- long delay:遅延したいミリ秒数
- long period:繰り返し実行したい間隔ミリ秒数
TimerTask型
TimerTask
はRunnable
を継承しており、実行したい処理を定義するクラスです。run
メソッドをオーバーライドして実行したい処理を定義します。
おすすめ記事:Runnableオブジェクトとは?
使い方
Timer
クラスを使用して「1秒遅延して1秒ごとに処理を実行する」処理を実装するには以下のようになります。run
メソッド内はバックグラウンドスレッドになるのでUI操作を行いたい場合はHandler
などを使用して明示的にUIスレッドに変更して使用します。
Timerは再利用できない
Timer
は一度cancel
メソッドを呼び出すと同じTimer
インスタンスからschedule
メソッドを再度呼び出すことはできません。
呼び出そうとするとjava.lang.IllegalStateException
エラーを吐きます。そのため再度スケジュールしたい場合は新しいTimer
インスタンスを生成して使用する必要があります。
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。